2011-09-08 1059 views
0

我執行一個存儲過程如下:Oracle存儲過程 - 打印VARCHAR2輸出變量

var myOutput varchar2 

exec myproc(:myOutput) 

print myOutput 

但是,這是行不通的。

我得到一個錯誤消息說:

Bind Variable "myOutput" is NOT DECLARED 

當我使用一個refcurser而不是其他特效一個VARCHAR2,這個工程。我究竟做錯了什麼?

謝謝!

回答

2

所以,你有這樣一個過程:

CREATE OR REPLACE PROCEDURE bark (woof IN OUT VARCHAR2) 
IS 
BEGIN 
    woof := 'Woof!'; 
END bark; 

然後運行:

SQL> var myOutput VARCHAR2(10) 
SQL> exec bark(:myOutput); 

PL/SQL procedure successfully completed. 

SQL> print myOutput 

MYOUTPUT 
-------------------------------- 
Woof! 

這是類同你正在嘗試做什麼?

+0

給我兩個錯誤。首先一個關於myoutput的錯誤是我在執行proc時聲明的,然後同樣的錯誤在上面。 – kralco626

+0

抱歉,我在編寫答案時做了一些假設。我將編輯原始帖子。 – roartechs

2

難道是究竟是你在跑什麼?如果是這樣,我認爲問題是你沒有指定你的myOutput變量的大小。你需要這樣做(調節距離根據您的具體需求):

SQL> var myOutput varchar2(40) 

它在the documentation