作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 .NET 代码目前正在使用 ODP.NET 多次调用存储过程来对许多表中的不同行进行操作。 .NET 代码有一组要更改的行。每次调用只更改一个参数,我想将数组从.NET 传递到 PL/SQL 以对多行进行操作(行数会改变)。
我已经成功地将一个数组从 .NET 传递到 PL/SQL,使用:
type number_arr is table of number(10) index by pls_integer;
PROCEDURE "BLAH" (foo IN number_arr);
UPDATE t SET a = b WHERE a = foo;
UPDATE t SET a = b WHERE a IN (foo);
最佳答案
您使用的数组是 associative array ,而不是可变数组。可变数组和嵌套表可以在 SQL 中使用,但关联数组不能。但是,由于您首先尝试在 PL/SQL 中执行此操作,因此可以使用批量绑定(bind)(它将与关联数组一起使用):
PROCEDURE BLAH (foo IN number_arr) is
i number;
begin
forall i in foo.first .. foo.last
UPDATE t SET a = b WHERE a = foo(i);
end blah;
create type number_arr as varray(10) of number;
CREATE PROCEDURE BLAH (foo IN number_arr) is
begin
UPDATE t SET a = b WHERE a in (select * from table(foo));
end blah;
forall
更快。 .
关于sql - 如何在 PL/SQL 中将 SQL 'IN'(或 'ANY')运算符与 VARRAY 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711661/
我是一名优秀的程序员,十分优秀!