我正在尝试使用nodeJS
创建表并将数据插入到oracle db中下面是我的查询代码
oracledb.getConnection(
{
user: userId,
password: password,
connectString: `(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ${host})(PORT = ${port}))(CONNECT_DATA = (SID = ${sid})))`
},
function (err, connection) {
if (err) {
errorHandler(err);
return;
}
connection.execute(
query,
function (err, result) {
if (err) {
errorHandler(err);
oracleFunctions.connection.doRelease(connection, errorHandler);
return;
}
successHandler(result);
oracleFunctions.connection.doRelease(connection, errorHandler);
});
});
作为查询,我使用以下内容创建表格。
begin
execute immediate 'CREATE TABLE "table0" ("Channel" VARCHAR(128),
"Pay_mode" VARCHAR(128),
"Product_group" VARCHAR(128),
"PivotDimension" VARCHAR(128),
"Values" DECIMAL(18,6))';
execute immediate 'CREATE TABLE "table1" ("Channel" VARCHAR(128),
"Pay_mode" VARCHAR(128),
"Product_group" VARCHAR(128),
"PivotDimension" VARCHAR(128),
"Values" DECIMAL(18,6))';
end;
我也使用以下内容将数据插入到创建的表中。
INSERT ALL
INTO "table0" VALUES ('AM' , 'PP' , 'NP ISP Annuity' , '1' , '0.11' )
INTO "table0" VALUES ('AM' , 'PP' , 'NP ISP Annuity' , '2' , '0.26' )
SELECT * from dual;
这些查询在Jetbrain的DataGrip上完美运行。
我首先执行create table查询,当返回成功响应时,我将行插入表中。
然而,奇怪的是,当我执行代码时,会发生两个错误
Error: ORA-00955: name is already used by an existing object
ORA-06512: at line 2
用于创建表格和
Error: ORA-00905: missing keyword
用于插入表格。
更奇怪的是,表格被创建得很好但插入不会发生。
我已多次检查以确保create table只运行一次,并且每个表只插入一次。我可能做错了什么?
答案 0 :(得分:0)
这里没什么奇怪的。你被要求做一些令人怀疑的事情,而甲骨文试图完成它,不再是。
首先,在使用Oracle时,您几乎不应该以动态方式创建表。 ORA-955
表示您不止一次执行了您的请求。你创建了表,好的。你要求再次创建它。你在等什么回答? Oracle表示这些表已经存在。我想没什么奇怪的。
ORA-905
,很可能意味着您尝试将select * from dual
作为INSERT ALL
语句的一部分执行。 Oracle正在等待下一个INTO
语句但得到SELECT
而不是它,因此它表示语法错误。再一次,没什么奇怪的