Oracle 11 g 中调用过程出错

Error in Calling Procedure in Oracle 11 g

我是 oracle 的新手,在调用 Oracle 中的存储过程时遇到以下问题。

错误: *未声明绑定变量 "ERROR_MSG"

匿名区块已完成*

1) 调用存储过程

DECLARE 

  XMLDATA VARCHAR2(200);

  P_YEAR_ID NUMBER;

  USER_ID NUMBER;

  ERROR_MSG NVARCHAR2(200);

BEGIN

  XMLDATA := NULL;

  P_YEAR_ID := NULL;

  USER_ID := NULL;

  PK_ADMIN.P_SAVE_ROLLUP_LPF_FAC(

    XMLDATA => XMLDATA,

    P_YEAR_ID => P_YEAR_ID,

    USER_ID => USER_ID,

    ERROR_MSG => ERROR_MSG

  );



     :ERROR_MSG := ERROR_MSG;
    --rollback; 

END;

2) 程序定义:

以下程序在包中

PROCEDURE P_SAVE_ROLLUP_LPF_FAC(xmlData IN VARCHAR2,p_year_id number,user_id 

number,error_msg OUT nocopy NVARCHAR2) AS

  X SYS.XMLTYPE;

    NEW_BU_ID NUMBER;

  BEGIN

    X := sys.xmltype.createXML(xmlData);

    BEGIN     

      //Here is the logic for processing of the XML

  END;

除了@Ersin Guelbahar 建议的内容,我希望您对调用过程的方式做更多的更改:

DECLARE 

  XMLDATA VARCHAR2(200):= NULL;

  P_YEAR_ID NUMBER:=NULL;

  USER_ID NUMBER :=NULL;

  ERROR_MSG NVARCHAR2(200);

BEGIN

 /*****No need to assign at sepearate step. You can decalre and assign*****
  --XMLDATA := NULL;

  --P_YEAR_ID := NULL;

  --USER_ID := NULL; ********************/

  PK_ADMIN.P_SAVE_ROLLUP_LPF_FAC(

    XMLDATA => XMLDATA,

    P_YEAR_ID => P_YEAR_ID,

    USER_ID => USER_ID,

    ERROR_MSG => ERROR_MSG

  );

     ERROR_MSG := ERROR_MSG;
    --rollback; 

END;