Oracle 将变量与包绑定
Posted
技术标签:
【中文标题】Oracle 将变量与包绑定【英文标题】:Oracle Bind Variables with Package 【发布时间】:2014-07-10 13:54:07 【问题描述】:我是来自 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 位置”
我显然错过了什么,你能帮帮我吗?
【问题讨论】:
【参考方案1】:默认参数绑定是IN
,所以你的p1
、p2
是IN
,而不是OUT
。我想你想要:
USING OUT p0, OUT p1, OUT p2, IN OUT p3, IN p4 ;
【讨论】:
以上是关于Oracle 将变量与包绑定的主要内容,如果未能解决你的问题,请参考以下文章