gpt4 book ai didi

variables - Oracle 将变量与包绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 09:24:17 26 4
gpt4 key购买 nike

我是 Oracle PLSQL 世界的新手,拥有 T-SQL 背景。

我在尝试使用绑定(bind)变量生成一些动态 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 绑定(bind)变量绑定(bind)到 OUT 位置”

我显然错过了一些东西,你能帮我吗?

最佳答案

默认参数绑定(bind)是IN,因此您的p1p2IN,而不是OUT 。我想你想要:

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

关于variables - Oracle 将变量与包绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com