函数定义
create or replace function fun_seletall()
returns setof record as
$$
begin
return query select * from e_info order by e_id;
end;
$$
language 'plpgsql' volatile
cost 100
rows 1000;函数执行
select fun_selectall();错误提示
set-valued function called in context that cannot accept a set
create or replace function fun_seletall()
returns setof record as
$$
begin
return query select * from e_info order by e_id;
end;
$$
language 'plpgsql' volatile
cost 100
rows 1000;函数执行
select fun_selectall();错误提示
set-valued function called in context that cannot accept a set
解决方案 »
- 我有个表有2千万数据,建全文索引要多久?
- Mysql MyISAM数据库引擎发音
- MySql+ODBC的配置问题
- 遇到一个mysql奇怪的问题
- 急,高手,我用phpmyadmin连接数据库,以前连接都没有问题,现在报: “Got error 28 from table handler”,什么原因
- MySQL的查询结果怎么保留阿?在线等~~~~~~~~~~~~~~~``````
- 如何实现mysql里的数据定时更新
- openfire服务器设置过程遇到的问题,急急急!
- 数据表进行插入操作的时候 会报重复主键@@
- Mysql 怎样将一个数据库中表 数据 插入到 另一个数据库 表中
- 有谁玩过MySql双机热备的??
- mysql的C api,一旦某个连接断线,能否以某种方式通知客户端应用程序
CREATE FUNCTION dt1() RETURNS SETOF record AS $$
declare r record;
ff varchar:='SELECT "A",';
begin
for r in select distinct "B" from tth1 loop
ff:=ff || 'max(case when "B"='''||r."B" || '''' || ' then "C" ' || ' end ),';
RAISE NOTICE '123(%)', ff;
end loop;
ff:=substr(ff,1,length(ff)-1) || ' from tth1 group by "A"';
FOR r IN execute ff Loop
RETURN NEXT r;
END LOOP;
end;
$$ LANGUAGE plpgsql;select * from dt1() a(q text,d float,e float,f float);
要将字段名、类型写上
你照着改改就行了。
CREATE TABLE foo (fooid INT, foosubid INT, fooname TEXT);
INSERT INTO foo VALUES (1, 2, 'three');
INSERT INTO foo VALUES (4, 5, 'six');CREATE OR REPLACE FUNCTION getAllFoo() RETURNS SETOF foo AS
$BODY$
DECLARE
r foo%rowtype;
BEGIN
FOR r IN SELECT * FROM foo
WHERE fooid > 0
LOOP
-- can do some processing here
RETURN NEXT r; -- return current row of SELECT
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;SELECT * FROM getallfoo();