看了说明文档,想到如果我想这样:
select * from table1;
我想返回查找到的结果集,怎么实现呢~
文档上说select * from table1只是返回一个行结果,是这样吗?

解决方案 »

  1.   

    --PostgreSQL不能简单的在存储过程里边select数据返回,只能通过return next的方式返回行集,如下为测试语句:--创建测试表
    create table test1(id int,name varchar);--插入测试数据
    insert into test1 values(1,'abc');
    insert into test1 values(2,'def');--创建返回结果集的存储过程
    CREATE OR REPLACE FUNCTION proc_test1()
      RETURNS setof record AS
    $BODY$declare
    v_rc record;
    beginfor v_rc in select * from test1
    loop
    return next v_rc;
    end loop;return;end;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;--调用存储过程
    select * from proc_test1() as t(id int,name varchar);
      

  2.   

    setof record 
    关键是这个set of
    集合
    也可以用于其他类型
      

  3.   

    大概理解了,有个问题
    select * from proc_test1() as t(id int,name varchar); 
    as t(id int,name varchar);作用只是显示出来吗?这里的t是不是只是个临时的表结构之类的?
    如果我想在程序中得到这个结果集怎么做呢?
    我的理解:
    OdbcCommand cmd = null;
    cmd = myConnection.CreateCommand();
    cmd.CommandText = "{}";//这里的{}中应该填入什么呢?才能实现下面的功能
    结果集 x = cmd.ExecuteNonQuery()
      

  4.   

    我用cmd.CommandText = “select * from proc_test1() as t(id int,name varchar)“
    可以,除了直接这样调用SQL语句还有什么其他的方法吗?