複数の結果セットを返すPostgresQL関数があります。これらの結果セットを.netで問題なく抽出できますが(関数が正しく機能することがわかります)、node-postgresで抽出するのに問題があります。
結果オブジェクトは、返されたデータセットの数と一致する7つのアイテムの配列を返します。
ノードでは、7つの行のそれぞれに。の文字列が含まれているだけです<unnamed portal 1>
。
connection.query("BEGIN");
connection.query({text: "SELECT getoperationaldatasetmodel($1)", values : [clientid]}, function(err, results) {
if (err) {
connection.query("COMMIT");
self.pool.release(connection);
callback(err);
}
else {
var opsDataset = null;
var rows = results.rows;
// this returns 7 rows but the rows do not contain data but rather the name of the dataset.
}
つまり、node-postgresは複数の結果セットをサポートしていますか?サポートされている場合は、抽出方法に関する提案はありますか?
編集:これは私がnode-postgresで使用したコードです。将来誰かがそれを使用する必要がある場合に備えて。
// must wrap in a transaction otherwise won't be able to see the multiple sets.
connection.query("BEGIN");
connection.query({text: "SELECT myfunction($1)", values : [clientid]}, function(err, results) {
if (err) {
// handle error here
connection.query("COMMIT;");
}
else {
connection.query('FETCH ALL FROM "<unnamed portal 1>"', function(err, r1) {
// r1.rows will contain the data for the first refcursor
});
connection.query('FETCH ALL FROM "<unnamed portal 2>"', function(err, r2) {
// r2.rows will contain the data for the second refcursor
});
// remember to handle the closure of the transaction
});