У меня есть функция PostgresQL, которая возвращает несколько наборов результатов. Я могу без проблем извлечь эти наборы результатов в .net (поэтому я знаю, что моя функция работает правильно), но у меня возникают проблемы с этим с node-postgres.
Объект результата возвращает массив из 7 элементов, который соответствует количеству возвращенных наборов данных.
В Node каждая из 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
});
refcursor
в SQL. - person Craig Ringer   schedule 24.08.2012