前台传一个似类于
"declare ... begin ... end;"
其中定义了一个cursor,并在begin中打开了这个cursor..我想将这个cursor返回出来..怎么搞..有办法吗..(不用存储过程.原谅我的这个怪情况)!

解决方案 »

  1.   


    SQL> variable cur1 refcursor;
    SQL> declare
      2  begin
      3   open :cur1 for select c1 from pp_test where rownum=1;
      4  end;
      5  /PL/SQL 过程已成功完成。SQL> print :cur1;C1
    ----------------------------------------------------------------------
    912211213SQL>不知道上面这样是不是你想要的!
      

  2.   

    记不清了,好像是
    variable rtn_c REFCURSOR;
    begin
    open :rtn_c for select to_number(to_char(sysdate,'day')) from dual;
    end;
    /
      

  3.   

    我想把下句SQL中的curRecordType返回出来!
    行吗..不要放在存储过程里!DECLARE
      intResult INTEGER;
      strSQL varchar2(8000);
      curRecordType UserPackage.MyRecordType;
      CustomOutput1 INTEGER;
      CustomOutput2 INTEGER;
      CustomOutput3 INTEGER;
      CustomOutput4 INTEGER;BEGIN
      intResult := 0;
      strSQL := '';
      CustomOutput1:=0;
      CustomOutput2:=0;
      CustomOutput3:=0;
      CustomOutput4:=0;
      /*被省略的代码*/  strSQL := 'SELECT ' || intResult || ' AS Result ,'  || CustomOutput1 || ' AS CustomOutput1, '  || CustomOutput2 || ' AS CustomOutput2, '  || CustomOutput3 || ' AS CustomOutput3, '  || CustomOutput4 || ' AS CustomOutput4 FROM tblSprocResult WHERE ROWNUM = 1 ';
      OPEN curRecordType FOR strSQL;
      dbms_output.put_line(strSQL);EXCEPTION 
      WHEN OTHERS THEN
        intResult := -1;
        strSQL := 'SELECT ' || intResult || ' AS Result ,'  || CustomOutput1 || ' AS CustomOutput1, '  || CustomOutput2 || ' AS CustomOutput2, '  || CustomOutput3 || ' AS CustomOutput3, '  || CustomOutput4 || ' AS CustomOutput4 FROM tblSprocResult WHERE ROWNUM = 1 ';
        OPEN curRecordType FOR strSQL;
        
        ROLLBACK;END;