Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在节点oracledb 5.1中执行存储过程时获取编译错误_Node.js_Oracle_Node Oracledb - Fatal编程技术网

Node.js 如何在节点oracledb 5.1中执行存储过程时获取编译错误

Node.js 如何在节点oracledb 5.1中执行存储过程时获取编译错误,node.js,oracle,node-oracledb,Node.js,Oracle,Node Oracledb,我正在尝试执行一个原始存储过程,它显示了SQL Developer中的一些编译错误。但是它不会从execute()方法在回调函数中返回 ex.runQuery=async(数据)=>{ //{“状态”:“成功”,数据:{result},object_key_seq:data[i]。object_key_seq,type:data[i]。type,i:i} //{“STATUS”:“ERROR”,“ERROR”:utils.parseError(err,query),object_key_seq

我正在尝试执行一个原始存储过程,它显示了SQL Developer中的一些编译错误。但是它不会从execute()方法在回调函数中返回

ex.runQuery=async(数据)=>{
//{“状态”:“成功”,数据:{result},object_key_seq:data[i]。object_key_seq,type:data[i]。type,i:i}
//{“STATUS”:“ERROR”,“ERROR”:utils.parseError(err,query),object_key_seq:data[i]。object_key_seq,type:data[i]。type,i:i}
让连接=null;
设resutl=null;
试一试{
connection=wait或connect.getPoolConnection()
如果(data.object_type=='SEQUENCE'| | data.object_type=='TABLE'| | data.object_type=='VIEW'| | data.object_type=='INDEX'){
data.script=data.script.slice(0,-1);
}
if(data.script.slice(-1)=='/')){
data.script=data.script.slice(0,-1);
}
resutl=await-oraconnect.query(connection,data.script,[],100);
}捕捉(错误){
控制台日志(err);
返回{“STATUS”:“ERROR”,“ERROR”:{errorMessage:err.message},object_key_seq:data.object_key_seq,type:data.type,object_name:data.object_name}
}最后{
如果(连接){
试一试{
等待oraconnect.doRelease(连接);
//等待连接。关闭();
}捕捉(错误){
控制台错误(err);
}
}
}
返回{“STATUS”:“SUCCESS”,数据:{resutl},对象_key_seq:data.object_key_seq,类型:data.type,对象_name:data.object_name}

}
您的问题不会显示在节点oracledb中执行的语句文本,但SQL Dev屏幕截图似乎显示您正在创建或编译存储过程

在节点oracledb中创建PL/SQL过程和函数时,当前版本5.1不支持PL/SQL编译错误返回的“success with info”错误。这在增强请求中有所说明

您可以通过查询
用户错误来手动检查问题,如:

wait connection.execute(
`根据需要创建或替换过程badproc()
开始
无效的
结束;`);
const r=wait connection.execute(
`选择行、位置、文本
从用户错误
其中name='BADPROC'和type='PROCEDURE'
按名称、类型、行、位置排序`,
[],{outFormat:oracledb.OUT_FORMAT_OBJECT}
);
if(r.行数.长度){
console.error(r.rows[0].TEXT);
console.error('at line',r.rows[0]。line',position',r.rows[0]。position);
}
输出如下所示:

PLS-00103: Encountered the symbol ")" when expecting one of the following:

   <an identifier> <a double-quoted delimited-identifier>
   current delete exists prior

at line  1 position 19
给出:

[Error: ORA-06550: line 1, column 7:
PLS-00905: object CJ.BADPROC is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored] {
  errorNum: 6550,
  offset: 6
}

请你的问题包括你的代码和错误。@cbr编辑的帖子更好。谢谢你,克里斯托弗·琼斯,这帮了大忙。
[Error: ORA-06550: line 1, column 7:
PLS-00905: object CJ.BADPROC is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored] {
  errorNum: 6550,
  offset: 6
}