Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ADO,如何调用Oracle PL/SQL块并指定输入/输出绑定变量(参数?)_Oracle_Vba_Ado - Fatal编程技术网

使用ADO,如何调用Oracle PL/SQL块并指定输入/输出绑定变量(参数?)

使用ADO,如何调用Oracle PL/SQL块并指定输入/输出绑定变量(参数?),oracle,vba,ado,Oracle,Vba,Ado,我试图用ADO和VBA调用PL/SQL块,但无法传递输入和/或输出绑定变量(可能是aka参数) 上面的代码段在cm处失败。使用ORA-01008执行行:并非所有变量都绑定了 如果能为我的问题找到解决方案,我将不胜感激。这句话似乎不能以声明开始。(感谢托马斯·琼斯·洛的宝贵评论) 因此,该语句必须包含在另一个begin。。结束块: ' additional begin so that the statement does not start with a declare: plsql =

我试图用ADO和VBA调用PL/SQL块,但无法传递输入和/或输出绑定变量(可能是aka参数)

上面的代码段在
cm处失败。使用ORA-01008执行
行:并非所有变量都绑定了


如果能为我的问题找到解决方案,我将不胜感激。

这句话似乎不能以
声明开始。(感谢托马斯·琼斯·洛的宝贵评论)

因此,该语句必须包含在另一个
begin。。结束
块:

' additional begin so that the statement does not start with a declare:
plsql =         "begin "

plsql = plsql & "declare"
plsql = plsql & "  num_in  number := ?;"
plsql = plsql & "  num_out number; "
plsql = plsql & "begin"
plsql = plsql & "  num_out := num_in * 5;"
plsql = plsql & "  ? := num_out;"
plsql = plsql & "end;"

' closing the additional begin:
plsql = plsql & "end;"

现在,它按预期工作。

我不确定Oracle是否允许您在匿名PL/SQL块中定义这样的变量。你想做什么?这显然是我真正想要实现的一个精简版本。真正的事情是实例化一个PL/SQL对象类型,将实例传递给一个过程,然后在对象类型上评估一些方法和成员。非常好的问题…oracle和ado冲突的无限奇怪的方式是无限多的…天啊,你救了我一天!干得好非常感谢。完全愚蠢的行为。你是怎么找到这个解决方案的?
' additional begin so that the statement does not start with a declare:
plsql =         "begin "

plsql = plsql & "declare"
plsql = plsql & "  num_in  number := ?;"
plsql = plsql & "  num_out number; "
plsql = plsql & "begin"
plsql = plsql & "  num_out := num_in * 5;"
plsql = plsql & "  ? := num_out;"
plsql = plsql & "end;"

' closing the additional begin:
plsql = plsql & "end;"