Node.js 如何在节点oracledb 5.1中执行存储过程时获取编译错误
我正在尝试执行一个原始存储过程,它显示了SQL Developer中的一些编译错误。但是它不会从execute()方法在回调函数中返回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
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
}