2016-12-05 3 views
0

Я новичок в вопросе оракула и обращении ниже при вызове хранимой процедуры в Oracle.Ошибка в процедуре вызова в Oracle 11 g

Ошибка: * Bind переменная "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; 
+1

вы можете изменить это: ': ERROR_MSG: = ERROR_MSG;' это для 'ERROR_MSG: = ERROR_MSG;' –

+0

Большое спасибо Эрсину, это сработало –

ответ

0

Помимо того, что @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; 
Смежные вопросы