就是在Oracle数据库中创建一个带条件查询的存储过程,放回查询结果集

解决方案 »

  1.   

    结果集不好返回的,要么将结果放入一个新建临时表,后续处理完可以drop掉,要么打印出来,要么写入脚本文件。
      

  2.   

    Setting environment for using Microsoft Visual Studio 2008 x86 tools.C:\Program Files\Microsoft Visual Studio 9.0\VC>sqlplus scott/wellhopeSQL*Plus: Release 10.1.0.2.0 - Production on 星期四 8月 19 10:07:23 2010Copyright (c) 1982, 2004, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
    With the Partitioning, OLAP and Data Mining optionsSQL> CREATE OR REPLACE PROCEDURE proc_ttt(condit VARCHAR2,o_cur OUT Sys_Refcurso
    r)
      2  AS
      3
      4
      5  BEGIN
      6    OPEN o_cur FOR 'select rownum rn from dual connect by '||condit;
      7  END;
      8  /Procedure created.SQL> exec proc_ttt(' rownum<10',:cur);PL/SQL procedure successfully completed.SQL> print cur        RN
    ----------
             1
             2
             3
             4
             5
             6
             7
             8
             9
            1010 rows selected.SQL>
      

  3.   

    create or replace procedure test_pro(vid tj_test.id%type,curtest out SYS_REFCURSOR) as
       vdata tj_test%rowtype;
    begin
      open curtest for select id,name,age from tj_test where id <= vid;
      loop
        fetch curtest into vdata;
         exit when curtest%notfound;
        dbms_output.put_line(vdata.id);
      end loop;
      close curtest;  
    end test_pro;