【问题标题】:Oracle Bind Variables with PackageOracle 将变量与包绑定
【发布时间】: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 位置”

我显然错过了什么,你能帮帮我吗?

【问题讨论】:

    标签: variables plsql oracle10g bind


    【解决方案1】:

    默认参数绑定是IN,所以你的p1p2IN,而不是OUT。我想你想要:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 2011-03-18
      • 2015-02-07
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多