一个存储过程调用另外好多存储过程,另外的存储过程需要的参数差不多(集中在2个表中的一些字段)(数据只有一条)可否在第一个存储过程中查出值放在游标中,然后把参数传给其他的存储过程,这个传递的方式是么样的?
或者可以用其他的什么方式来处理小弟,刚学存储过程,高手请指点!

解决方案 »

  1.   


    SQL> CREATE OR REPLACE FUNCTION gg(s INT,e INT) RETURN SYS_REFCURSOR AS
      2   r_c SYS_REFCURSOR;
      3  BEGIN
      4  OPEN r_c FOR
      5   SELECT ename,empno
      6     FROM (SELECT ename,empno, ROW_NUMBER() OVER(ORDER BY ENAME) RN FROM SCOTT.EMP T)
      7    WHERE RN >= S
      8      AND RN <= E;
      9  RETURN r_c;
     10  END;
     11  /Function createdSQL> 
    SQL> create or replace procedure gg_new(r_c SYS_REFCURSOR)
      2  as
      3   v_c1 VARCHAR2(10);
      4   v_c2 VARCHAR2(10);
      5  BEGIN
      6   LOOP
      7    FETCH r_c INTO v_c1,v_c2;
      8    EXIT WHEN r_c%NOTFOUND;
      9    dbms_output.put_Line(v_c1||'-'||v_c2);
     10   END LOOP;
     11   CLOSE r_c;
     12  END;
     13  /Procedure createdSQL> 
    SQL> declare
      2    r_c SYS_REFCURSOR;
      3  begin
      4    r_c := gg(2,6);
      5    gg_new(r_c);
      6  end;
      7  /ALLEN-7499
    BLAKE-7698
    CLARK-7782
    FORD-7902
    JAMES-7900PL/SQL procedure successfully completedSQL> 
      

  2.   

    1.不用过程,用函数,将它的返回值存放为查出的值。
    2.用过程,并定义out型参数来存放查出的值。
      

  3.   

    返回游标,需要把所有过程打包,通过REF CURSOR返回。
      

  4.   

    hyrongg谢谢了,还没验证你给的答案,不过你写的东西就是我想要的,非常谢谢
    也谢谢各位,分数不是很多了~