经过大量的 google-fu 之后,我找到了一种查询古老 sybase 数据库的方法,以开始为我正在使用 node-odbc 开发的移动应用程序构建一个 rest api ( https://github.com/markdirish/node- odbc/blob/master/README.md#callprocedurecatalog-schema-name-parameters-callback)。
我已经成功地使用 select 语句进行了查询,但出于安全目的,我不希望这样做。当我尝试使用存储过程时,我得到了一个奇怪的响应。我需要在这里进行健全性检查并找出我缺少的东西。
我尝试的一个示例存储过程是一个简单的 sp,它带有一个参数来使用帐号检查电子邮件地址(当然这是一个假 sp,但格式相同):
"DB"."spGetEmail"(@acctnum varchar(50))
文档显示了这一点:
常量 odbc = 要求('odbc');
odbc.connect( ${process.env.CONNECTION_STRING}
, (error, connection) => { connection.callProcedure(null, null, 'MY_PROC', [undefined], (error, result) => { if (error) { console.error(error) } / /handle // result 包含一个结果数组,并且有一个parameters
属性来访问过程返回的参数。console.log(result); }); });
我将其解释为如下所示:
odbc.connect(${process.env.CONNECTION_STRING}, (error, connection) => { connection.callProcedure(null, "DB", "spGetEmail", [123456], (error, result) => { if (error ) { console.error(error) } // 句柄 // result 包含一个结果数组,并且有一个parameters
属性可以访问过程返回的参数。console.log(result); }); });
然后我得到这个:
[错误:[odbc] 过程期望的参数个数和传递的参数个数不相等] { odbcErrors: [] } undefined Segmentation fault
似乎很简单,我缺少一些参数,但我知道我没有。dang sp 采用一个参数!
我在这里想念什么?