Postgres等效于MS-SQL SELECT DataSet(在一个查询中返回多个表)

时间:2014-01-17 13:13:24

标签: postgresql npgsql

我正在寻找使用npgsql和postgres函数(存储过程)检索多个DataTables(在一个DataSet中)的可能性。虽然我的postgres函数已经可以正常工作了,但我没有找回2个单独的表,而只返回一个表,包含所有查询的所有结果(通过pgAdmin和npgsql / NpgsqlDataAdapter.Fill执行函数时)。

请在此处查看我的简化示例:

CREATE OR REPLACE FUNCTION "MyFunction"(_parameter character varying)
RETURNS SETOF "MyView" AS
$BODY$
DECLARE
BEGIN
return query SELECT * FROM "MyView" WHERE "Col1" = 'A' AND "Col2" = _parameter;
return query SELECT * FROM "MyView" WHERE "Col1" = 'B' AND "Col2" = _parameter;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;

使用来电者:

SELECT * FROM "MyFunction"('abc');

是否有任何方法可以使用npgsql.dll返回包含SEPARATE DataTables的DataSet?查询必须不一定是通过postgres函数 - 如果它可以通过简单地使用ngpsql ExecuteScalar来获得具有单独表的这样的DataSet,甚至可能更好......感谢任何建议!

1 个答案:

答案 0 :(得分:0)

它应该不起作用 - PostgreSQL不支持多记录集。使用一个技巧,您可以返回一组返回的游标。

RETURN QUERY将结果发送到输出,但两个RETURN QUERY用法的结果之间没有干净的边框。它与UNION相同。

RETURN QUERY SELECT 1;
RETURN QUERY SELECT 1;
RETURN;

与:

相同
RETURN QUERY SELECT 1 UNION SELECT 2;
RETURN;