2014-07-10 92 views
2

我是來自T-SQL背景的Oracle PLSQL的新手。Oracle與包綁定變量

我在嘗試使用綁定變量生成一些動態sql以調用包內的方法時遇到問題。

我試圖調用是.New__,屬於包PACKAGE_NAME

我.New__方法看起來像這樣

PROCEDURE New__ (
info_  OUT VARCHAR2, 
objid_  OUT VARCHAR2, 
objversion_ OUT VARCHAR2, 
attr_  IN OUT NOCOPY VARCHAR2, 
action_  IN  VARCHAR2) 

因此林調用它像這樣的方法:

DECLARE 
p0 VARCHAR2(10) := null; -- param 0 of the method 
p1 VARCHAR2(10) := null; -- param 1 of the method 
p2 VARCHAR2(10) := null; -- param 2 of the method 
p3 VARCHAR2(20) := null; -- param 3 of the method 
p4 VARCHAR2(20) :='DO'; -- param 4 of the method 
p5 VARCHAR2(100) :='PACKAGE_NAME.NEW__'; -- package and method name 

BEGIN 

EXECUTE IMMEDIATE 'BEGIN '||p5||'(:p0,:p1,:p2,:p3,:p4); END;' 
USING OUT p0,p1,p2, IN OUT p3, IN p4 ; 

END; 

我得到的錯誤是「ORA-06536:IN綁定變量綁定到OUT位置」

我明顯錯過了這個東西,你能幫我嗎?

回答

4

默認參數綁定爲IN,所以你p1p2IN,不OUT。我想你想要:

USING OUT p0, OUT p1, OUT p2, IN OUT p3, IN p4 ; 
+0

謝謝傑弗裏,輝煌的答案,並解決了我的問題。 – Merlin051