たくさんの google-fu を試した後、古い sybase データベースにクエリを実行して、node-odbc ( https://github.com/markdirish/node- odbc/blob/master/README.md#callprocedurecatalog-schema-name-parameters-callback )。
selectステートメントを使用して正常にクエリを実行できましたが、セキュリティ上の理由からそれを行いたくありません。ストアド プロシージャを使用しようとすると、奇妙な応答が返されます。ここで健全性チェックが必要で、何が欠けているかを把握します。
私が試したストアド プロシージャの例は、アカウント番号を使用して電子メール アドレスをチェックする 1 つのパラメーターを持つ単純な sp です (これはもちろん偽の sp ですが、同じ方法でフォーマットされています)。
"DB"."spGetEmail"(@acctnum varchar(50) )
ドキュメントはこれを示しています:
const odbc = require('odbc');
odbc.connect( ${process.env.CONNECTION_STRING}
, (エラー, 接続) => { connection.callProcedure(null, null, 'MY_PROC', [未定義], (エラー, 結果) => { if (エラー) { console.error(エラー) } / / handle // 結果には結果の配列が含まparameters
れ、プロシージャによって返されるパラメータにアクセスするためのプロパティがあります console.log(result); }); });
私はそれを次のように解釈しました:
odbc.connect(${process.env.CONNECTION_STRING}, (エラー, 接続) => { connection.callProcedure(null, "DB", "spGetEmail", [123456], (エラー, 結果) => { if (エラー) { console.error(error) } // ハンドル // 結果には結果の配列が含まparameters
れ、プロシージャによって返されるパラメータにアクセスするためのプロパティがあります console.log(result); }); });
それから私はこれを得る:
[エラー: [odbc] プロシージャが予期するパラメーターの数と、渡されたパラメーターの数が等しくありません] { odbcErrors: [] } 未定義のセグメンテーション違反
いくつかのパラメーターが不足していることは簡単に思えますが、そうではないことはわかっています。dang sp は 1 つのパラメータを取ります!
ここで何が欠けていますか??