我正在寻找使用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,甚至可能更好......感谢任何建议!
答案 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;