当前位置: 首页 > 知识库问答 >
问题:

Node.js OracleDB:ORA-01036:非法变量名称/编号

琴正初
2023-03-14

你好,美丽的人们。

我正在尝试使用连接到OracleDB的node.js创建RESTAPI,但我正在竭尽全力让这些愚蠢的绑定变量正常工作。

这是我的代码:

app.get('/mailsummary/:SCHEMA', function (req, res) {
    "use strict";

    oracledb.getConnection(connAttrs, function (err, connection) {
        if (err) {
            // Error connecting to DB
            res.set('Content-Type', 'application/json');
            res.status(500).send(JSON.stringify({
                status: 500,
                message: "Error connecting to DB",
                detailed_message: err.message
            }));
            return;
        }

        connection.execute("select * from :SCHEMA.event@db3", [req.params.SCHEMA], {
            outFormat: oracledb.OBJECT // Return the result as Object
        }, function (err, result) {
            if (err || result.rows.length < 1) {
                res.set('Content-Type', 'application/json');
                var status = err ? 500 : 404;
                res.status(status).send(JSON.stringify({
                    status: status,
                    message: err ? "Error getting vendor mailing summary." : "Vendor or DB does nto exist.",
                    detailed_message: err ? err.message : ""
                }));
            } else {
                res.contentType('application/json').status(200).send(JSON.stringify(result.rows));
            }
            // Release the connection
            connection.release(
                function (err) {
                    if (err) {
                        console.error(err.message);
                    } else {
                        console.log("GET /mailsummary/" + req.params.SCHEMA + " : Connection released");
                    }
                });
        });
    });
});

由于某种原因,我得到了错误

OracleDB : ORA-01036: illegal variable name/number

如果我删除bind变量,分配一个静态值,并删除sql语句后的“req.params.ScheMA”,并将括号留空,它就可以工作。

connection.execute("select * from peeps.event@db3", [], {
            outFormat: oracledb.OBJECT // Return the result as Object

我知道我拉绑定变量的方式一定很简单,但是我把头发拔出来了。

请帮帮我欧比万克诺比。。。你是我唯一的希望。

谢谢

共有1个答案

井修雅
2023-03-14

绑定变量是用于在数据库和客户端程序之间传输数据的占位符。您正在尝试传输SQL语句的文本-您的用法无效。

这种绑定行为不特定于node-oracledb;这是Oracle的工作方式。它有助于将数据和语句文本分开。

以下是一些常规绑定信息:http://docs.oracle.com/database/122/LNOCI/binding-and-defining-in-oci.htm#GUID-77A26CEA-1C41-46A2-866C-622F9FEB5482

 类似资料:
  • 请帮帮我 获取日期范围的数据时出错 错误 ora-01036非法变量名称/编号

  • 我有下面的insert查询 每次我尝试运行此查询时,都会出现此错误 我做了一些研究,显然这意味着其中一个变量不在SQL语句中。对我来说不是这样,我检查了语句、数据库(oracle)表和所有绑定变量,它们都匹配。 错误上的行号将表明它是$driveable变量。我做了一个检查,这是被发送到页面罚款。 不知道还有什么地方可以看,所以任何帮助都会很好。

  • 为什么在Oracle DB中出现此错误? cx_Oracle。ORA-01036:非法变量名称/数字

  • 我已经创建了一个API,希望将数据插入oracle数据库。但我收到一条错误消息“error:ORA-01036:非法变量名/编号”。我不知道我犯了什么错误。希望能帮我解决这个问题。先谢谢你。 [错误:ORA-01036:非法变量名/编号]{errorNum:1036,偏移量:0}

  • 我正在尝试使用oracledb客户端从nodejs对oracle数据库执行查询,并得到“ORA-01036:非法变量名/编号”。我尝试了多种建议的方法来传递我的变量,但失败了。使用硬代码值的查询。 以下是我的示例代码: 获取"ORA-01036:非法变量名称/数字"或空结果

  • 我想更新gridview中的行的单元格。但我得到的错误是 ORA-01036:非法变量名称/编号 在 下面是我的代码:-