2013-11-04 55 views
0

我有一個包含一個存儲過程的包。變量必須在存儲過程中聲明爲錯誤

存儲過程調用另一個包中的存儲過程。不過,我需要將選擇語句的結果作爲參數傳遞。所以我將結果存儲在一個變量中,並將其作爲參數傳遞。但是,當執行過程調用時,它說變量沒有被聲明。

這是示例代碼。

create or replace 
PACKAGE BODY PKG_BODY 

PROCEDURE PROC (error OUT VARCHAR2, 
        RESULT OUT BOOLEAN) AS 

----------------------------- 
----------------------------- 

DECLARE 
    PARAM TABLE1.COLUMN1%TYPE; 
    BEGIN 
    SELECT COLUMN1 
    INTO PARAM 
    FROM TABLE1 
    WHERE COLUMN2=ID AND COLUMN3='NAME'; 
    END; 

PUBLISH_MSG.PUBLISH_PMM_MSG('ID',PARAM,PO_ERR_MSG); --another procedure call 
END PROC; 

我收到以下錯誤:

PLS:00201 'Identifier PARAM must be declaed' 

難道我之前在其他地方申報PARAM?請幫忙 !!

+0

不要認爲你需要在Oracle中申報。 – Andrew

回答

3

你已經在一個嵌套的PL/SQL塊中定義了這個變量 - 它不能從外部塊訪問(塊完成後它不存在)。你應該將你的param變量的定義外塊,例如:

PROCEDURE PROC (error OUT VARCHAR2, 
        RESULT OUT BOOLEAN) 
AS 
    PARAM TABLE1.COLUMN1%TYPE; 
BEGIN 
----------------------------- 
----------------------------- 


    SELECT COLUMN1 
    INTO PARAM 
    FROM TABLE1 
    WHERE COLUMN2=ID AND COLUMN3='NAME'; 

PUBLISH_MSG.PUBLISH_PMM_MSG('ID',PARAM,PO_ERR_MSG); --another procedure call 
END PROC; 
+0

完美,謝謝:) – user2133404

相關問題