我是来自T-SQL背景的Oracle PLSQL世界的新手。
我在尝试使用绑定变量生成一些动态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位置"
我显然错过了soemthing,你能帮助我吗?
答案 0 :(得分:4)
默认参数绑定为IN
,因此p1
,p2
为IN
,而非OUT
。我想你想要:
USING OUT p0, OUT p1, OUT p2, IN OUT p3, IN p4 ;