我用.net (c#)调用postgresql函数,输出参数有两个,一个是数字型的,一个是游标,数字型的那个可以取到,但是游标取到的是“<unnamed cursor 1>”,不是我要的数据集,请问是怎么回事啊?要怎么样才能取到游标返回的结果集呢?我测试的函数是这样的:
CREATE OR REPLACE FUNCTION fun_test(IN mid integer, OUT mcount bigint, OUT mycur refcursor)
  RETURNS record AS
$BODY$
begin
select count(*) into mcount from tb_test;
open mycur for select * from tb_test limit 10 offset 100;
end;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION fun_test(integer) OWNER TO postgres;
我用的.net驱动是Npgsql,请高手指教下,在此谢过啦!

解决方案 »

  1.   

    0分贴一般来说关注的人比较少。另外postgreSQL熟悉的人也比较少。这个好象不是数据库这面的问题,建议你到.net 版同时也问一下。
      

  2.   

    不知你相要得到什么返回值。当前这个fun_test中有设定返回值为record类型,但整个函数中都没有进行record类型的return,当然是没有值的!请参考:
    http://www.enterprisedb.com/docs/en/8.3/server/plpgsql-structure.html
      

  3.   

    就是函数里面的输出参数啊, OUT mcount bigint, OUT mycur refcursor,mcount我在程序中取到了,但是后面的游标取出来是游标的名字,我想要通过这个游标取到一个数据集
      

  4.   

    整个SQL流程如下,你自己转化成C#begin
    SELECT * FROM fun_test(MID)
    --- 返回一行结果集 其中第2个字段的内容是游标名称
    fetch all from 游标名
    -- 从游标中获取结果集
    COMMIT