本帖最后由 xxxswl 于 2010-05-17 09:36:03 编辑

解决方案 »

  1.   

    CREATE FUNCTION dup(int) RETURNS TABLE(f1 int, f2 text)
        AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
        LANGUAGE SQL;SELECT * FROM dup(42);
      

  2.   

    select * from aa8() a(a int,b text,c text,d text)
    -- Function: aa8()-- DROP FUNCTION aa8();CREATE OR REPLACE FUNCTION aa8()
      RETURNS SETOF record AS
    $BODY$
    declare 
        sql varchar(1000); 
        myrec record; 
        ref refcursor;
        rec record;
    begin 
        sql:='select "CustomerId" '; 
        for myrec in select * from "Cus_Field" loop 
            sql := sql || ',max(case "FieldId" when ' || myrec."FieldId"  ||
    ' then "FieldValue" end) as ' || myrec."FieldName"; 
        end loop ;
        sql := sql || ' from "Cus_CustomerField" group by "CustomerId"';
        FOR rec IN execute SQL Loop   
            RETURN NEXT rec;
        END LOOP;
        
    end;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100
      ROWS 1000;
    ALTER FUNCTION aa8() OWNER TO zw;
      

  3.   

    谢谢 ACMAIN_CHM 的回复 但还不是我想要的 说的再具体点
    我需要一个postgresql函数 返回一个结果集合 SETOF record 类型
     如有一个表中有若干字段 "MyTable"  id,age,name,...... 只需要返回其中几个我想在函数中 创建一个临时变量(临时表) 来存放结果集合 并返回这个临时表
    (我的需求是固定的 不用其他方式实现!!!)语法大意:CREATE OR REPLACE FUNCTION getfoo()
      RETURNS SETOF record AS
    $BODY$declare declare temptable1 table(id int,age int);beginreturn query select myid,myage into temptable1   from (select * from "MyTable");end;$BODY$
      LANGUAGE 'plpgsql' VOLATILE
    ALTER FUNCTION getfoo() OWNER TO postgres;该如何实现???
      

  4.   

    谢谢大家的解答: 让我知道有很多新鲜的东西值得关注
    不给分的原因: 当我在网上找东西的时候 对得分的回复特别关注 如果得分回复与提出的问题不一致 可能会误导寻找答案的人!本题正解之一:CREATE OR REPLACE FUNCTION temptable()
      RETURNS SETOF record AS
    $BODY$begincreate temporary table "t_2" as select * from "MyTable";return query select * from "t_2";drop table t_2; /*这句值得关注 如果在查询工具连续执行 那么只有第一次是执行通过的 因为在同一会话中创建同名表会提示错误。*/end;$BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100
      ROWS 1000;
    ALTER FUNCTION temptable() OWNER TO postgres;
      

  5.   

    貌似xxxswl的方法不对,能否给出正确的代码,谢谢,急用
      

  6.   

    http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm
      

  7.   

    http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm