假如需要返回三个表 而这三个表结构[字段类型,个数]可能相同 也可能不同
该如何实现 最好有完整代码 及调用方法。。比如 下面是一个返回 一个表数据的完整代码CREATE OR REPLACE FUNCTION myff()
RETURNS SETOF record AS
$BODY$
beginreturn query select * from "MyTable";end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;调用方法[在查询工具中执行]
select * from "myff"() as tt(id integer,name text,pwd text);
该如何实现 最好有完整代码 及调用方法。。比如 下面是一个返回 一个表数据的完整代码CREATE OR REPLACE FUNCTION myff()
RETURNS SETOF record AS
$BODY$
beginreturn query select * from "MyTable";end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;调用方法[在查询工具中执行]
select * from "myff"() as tt(id integer,name text,pwd text);
union all select p1.type_name from product_type_1 p1;
union all select p1.type_name,p1.type from product_type_1 p1;
记住,以第一个SELECT作为别名,UNION ALL后面跟的要有相同字段,相同列数的SELECT查询才行.
temptable
id name age
1 aa 20
2 bb 30在函数里
return query select * from "temptable"
union all
select * from "temptable";在查询工具中执行该函数 并返回结果
1 aa 20
2 bb 30
1 aa 20
2 bb 30
返回的依然是 一个整体表可能是我没说明白:在asp.net中 有两种集合类型可以接收 pg数据库返回的集合类型数据
DateTable(一个表) DateSet(若干个表)想上面哪个例子 用DateTable接收就可以
现在如果用DateSet接收数据 那么只会有一个表
即
DateSet.table.count = 1;//DateSet中只有一张表
而我想要的是
DateSet.table.count = 2;这样的pg函数该如何写? 返回什么类型?需要注意什么?
2.需要把游标的名字返回给调用者(文档里说的很详细)
3.具体代码如下pg函数CREATE OR REPLACE FUNCTION reftext(ref1 refcursor, ref2 refcursor)
RETURNS SETOF refcursor AS
$BODY$
begin
open $1 for select * from "userTable";
return next $1;
open $2 for select * from "userInfo";
return next $2;
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION reftext(refcursor, refcursor) OWNER TO postgres;在查询工具中调用
select * from "reftext"('a','b');FETCH ALL FROM a;FETCH ALL FROM b;在asp.net中调用就很简单了 我不贴代码了 需要注意的是如上面的代码 PG函数应该返回2个表数据
但当DateSet接收的时候是3个表
即 DateSet.Table.Count == 3;
DateSet.Table[0] {a,b}
DateSet.Table[1] {userTable}
DateSet.Table[2] {userInfo}
结贴!