CREATE OR REPLACE FUNCTION proc_test1()
  RETURNS SETOF record AS
$BODY$ declare 
v_rc record; 
begin for v_rc in select * from test1 
loop 
return next v_rc; 
end loop; return; end; 
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION proc_test1() OWNER TO postgres;
这样没问题,
但是我想返回的是一个我事先定义的表~而不是一个未知类型的,因为我需要的是:别人不知道表的格式也能调用;
所以我得在存储过程中自己定义好表结构,然后返回表.
跪求实现方法,谢谢各位了,小弟万分感激!!!!!!

解决方案 »

  1.   

    我的妈啊~找死我了~终于还是让我找到了~网上资源真是太少了.
    方法如下:
    CREATE OR REPLACE FUNCTION proc_test3()
      RETURNS SETOF my_table AS
    $BODY$ DECLARE
         r my_table%rowtype; BEGIN
    for r in select * from test1 
    loop 
    return next r; 
    end loop;  return; 
    end; 
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION proc_test3() OWNER TO postgres;
    这样使用的时候就:
    select * from proc_test3()
    就OK了