如题,B存储过程输出参数有两个,第一个是RetCode表示是否执行成功,Result表示结果,我怎么在A存储过程中调用B,然后得到第二个输出参数,怎么调用我知道,关键我不知道怎么指定,然后获取第二个输出参数,请各位高手帮忙看看,谢啦!

解决方案 »

  1.   

    跟匿名块一样的declare
    v number;
    t number --1 ,ok ;o no
    k varchar2(100):='xxx';  --传入参数
    beginp1(k,t,v);
    if t=1 then
    ....
    end if;
    end;
      

  2.   


    create or replace procedure A as
    v_retCode char(1);
    v_result varchar2(100);
    begin
    --调用B存储过程
    B(v_retCode,v_result);
    dbms_output.put_line('v_result:' || v_result);
    end;
      

  3.   

    这么说吧,我的表记录有三列
    accno,ccy,accnobalance我要查询出
    accno,ccy,accnobalance,todaybalance
    其中的todaybalance=calc(accno,ccy,date,retcode,result);就是说,我希望选择出所有的列,但是要多一列计算列,是根据当天的日期和每一列的accno和ccy,调用一个calc的存储过程来计算出来的,这样要怎么写呢?
      

  4.   


    create or replace procedure your_proc
    is
      v_accno your_table.accno%type;
      v_ccy your_table.ccy%type;
      v_accnobalance your_table.accnobalance%type;
      
      v_retcode your_type; -- 不知道你calc過程中的參數類型
      v_result your_type; -- 不知道你calc過程中的參數類型
      
      cursor cur is
      select accno,ccy,accnobalance from your_table;
    begin
      for c in cur loop
        v_accno := c.accno;
        v_ccy := c.ccy;
        v_accnobalance := c.accnobalance;
        
        -- 你的calc是過程還是函數呀?怎麼你寫成
        -- todaybalance=calc(accno,ccy,date,retcode,result);
        calc(v_accno, v_ccy, date, v_retcode, v_result); -- 不知道你的date是什麼
        
        -- 我猜result就是你要的結果todaybalance吧
        dbms_output.put_line('retcode=' || v_retcode || ', result=' || v_result);
      end loop;
    end;
      

  5.   

    谢谢nGX,我希望返回的是一个包含了四列的游标,这样要再定义一个游标的我的date就是系统日期,yyyy-mm-dd格式的。calc是一个过程。不是函数。帮忙再看下,谢谢!
      

  6.   

    你希望在哪個存儲過程中返回包含4列的游標?4列是accno,ccy,accnobalance,todaybalance嗎?
    還有,todaybalance是不是calc中返回的result值?