本帖最后由 luxiangzhou 于 2013-04-08 09:27:00 编辑

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE KS_TYERP.PRO_A (参数, 参数...)
    IS
    BEGIN
      DECLARE
       P_A   VARCHAR2(2):='';  --输入
       P_B   VARCHAR2(2):='';--输入
       P_C   NUMBER(2):=0;    --输入
       O_D   VARCHAR2(2):=''; --输出
       O_E   VARCHAR2(2):=''; --输出 BEGIN
          
        --调用其他过程
        PRO_B(P_A,P_B,P_C,O_D,O_E);
        --继续其他处理
     END;
    END ;
    /大概就是这么调用的,返出参数的值可以在调用后改变和使用
      

  2.   

    CAL_HANGUP_TIME_DURA(V_p_sheetStreamNo,V_p_subFaultSheetId,V_p_subSheetId,V_p_starttime,V_p_endtime,V_p_sumHanguptimeDura)
                                  V_lc_sheetStreamNo,null,null,V_lt_starttime,V_lt_endtime,V_li_sumHangupDura;我是这样调用的,但是因为其中有2个null赋值,报错:
    Error: PLS-00103: 出现符号 "V_LC_SHEETSTREAMNO"在需要下列之一时:
            := . ( % ;
           符号 "(" 被替换为 "V_LC_SHEETSTREAMNO" 后继续。
    Line: 158
    Text: V_lc_sheetStreamNo,null,null,V_lt_starttime,V_lt_endtime,V_li_sumHangupDura;Error: PLS-00103: 出现符号 ";"在需要下列之一时:
            . ( ) , * @ % & = - + < / >
              at in is mod remainder not rem => <an exponent (**)>
              <> or != or ~= >= <= <> and or like like2 like4 likec between
              || multiset member submultiset
           符号 ")" 被替换为 ";" 后继续。
    Line: 158
    Text: V_lc_sheetStreamNo,null,null,V_lt_starttime,V_lt_endtime,V_li_sumHangupDura;Error: Hint: Variable 'V_lc_tipperType' is declared but never used in 'FEEDBACK_TIP'
    Line: 4
    Text: V_lc_tipperType            varchar2(16);Error: Hint: Variable 'V_lc_dealType' is declared but never used in 'FEEDBACK_TIP'
    Line: 7
    Text: V_lc_dealType              varchar2(16);Error: Hint: Variable 'V_lc_tipType' is declared but never used in 'FEEDBACK_TIP'
    Line: 8
    Text: V_lc_tipType               varchar2(16) ;
      

  3.   

    就是那个null怎么处理?目前想法是定义变量:I_NULL = null,然后这样调用:
    execute immediate 'call CAL_HANGUP_TIME_DURA(:V_p_sheetStreamNo,:V_p_subFaultSheetId,:V_p_subSheetId,:V_p_starttime,:V_p_endtime,:V_p_sumHanguptimeDura)'
                                 using I_NULL,I_NULL,V_li_subSheetId,V_lt_starttime,V_lt_endtime,V_li_sumHangupDura;不知道可行不?
      

  4.   

    execute immediate 'call CAL_HANGUP_TIME_DURA(:V_p_sheetStreamNo,:V_p_subFaultSheetId,:V_p_subSheetId,:V_p_starttime,:V_p_endtime,:V_p_sumHanguptimeDura)'
                                 using I_NULL,I_NULL,V_li_subSheetId,V_lt_starttime,V_lt_endtime,in out V_li_sumHangupDura;