sql oracle 存储过程中执行其它存储过程在一个存储过程 中,想调用别一个存储过程带返回值的,应该怎么弄,谢谢大家!

解决方案 »

  1.   


    --假设存储过程 B(i_var1 in number, o_var2 out number);
    --A存储过程调用
    create or replace procedure A
    as
     v_var2 number := 0;
     v_var2 number := 0;
    begin
     B(v_var1,v_var2); --需要什么参数传什么参数就可以了
    end;
      

  2.   

    create PROCEDURE proc_saveStorageItem
    (
      storageid IN NUMBER,
      weight IN float,
      orderformid IN varchar2,
      itemnum IN NUMBER
    )
    as
      sourcecode varchar2 :='';
    BEGIN 
      declare  i number; 
      i:=1;
      while i<=itemnum loop
        insert into z_storageitem (storageid,weight,sourcecode,orderformid) values(storageid,weight,proc_findID('sourcecode',sourcecode),orderformid);
      end loop;END;可否帮我看一下,这是如何的错,谢谢啊!
      

  3.   


    --1、i一直是1,死循环了。
    --2、proc_findID('sourcecode',sourcecode) 先写他再用值。
    --3、内层里面有declare 但是没有bengin end
    --5、定义变量的时候不要和表的字段名称定义成一样的,会产生意想不到的错误CREATE PROCEDURE PROC_SAVESTORAGEITEM(STORAGEID   IN NUMBER,
                                          WEIGHT      IN FLOAT,
                                          ORDERFORMID IN VARCHAR2,
                                          ITEMNUM     IN NUMBER) AS
      V_SOURCECODE VARCHAR2 := ''; --这里我改了
    BEGIN
      DECLARE
        I NUMBER;
      BEGIN                        --这里我改了
        I := 1;
      
        WHILE I <= ITEMNUM LOOP
          PROC_FINDID('sourcecode', V_SOURCECODE); --这里我改了
          INSERT INTO Z_STORAGEITEM
            (STORAGEID, WEIGHT, SOURCECODE, ORDERFORMID)
          VALUES
            (STORAGEID, WEIGHT, V_SOURCECODE, ORDERFORMID); --这里我改了。
          
          i := i + 1;                              --这里我改了
        END LOOP;
      END;
    END;
      

  4.   

    // 大概的步骤declare
    i number,
    o numberbeginproc(i,o);dbms_output.putline(o);end;