【发布时间】:2015-08-16 05:55:48
【问题描述】:
我想在存储过程中更新与 id 匹配的所有记录。 现在,这个 id 列表正在作为 varchar(关联数组)表传入..
CREATE TYPE varcharArray AS TABLE OF VARCHAR2(1000) index by ...
proc 声明类似于
PROCEDURE testProc (p_IDs in varcharArray, p_Success out Number)
以及proc中的update语句
update testtable
set col = 'val'
where id in (select column_value from table(p_IDs);
这似乎不起作用。所以我不得不在数组中做一个循环并为每个 ID 更新。
但我真的很希望使用 where in 子句对其进行更新。任何帮助都会很棒。
PS:id字段是一个数字。
【问题讨论】:
-
CREATE TYPE 后面的“...”是什么意思?
-
没什么,会更新的。
-
好的,那么它实际上不是关联数组,它是“嵌套表”。关联数组是一种 PL/SQL 类型,您可以在其中指定索引类型,例如“pls_integer 索引”或“varchar2(40) 索引”
-
其实是有索引的。对于那个很抱歉。已更新相关问题。
-
但是
create type是错误的,因为不能在数据库中创建关联数组,只能在PL/SQL块中声明。
标签: plsql associative-array plsqldeveloper oracle12c where-in