我正在使用类型为
的绑定变量执行delete语句CREATE OR REPLACE TYPE "VAR_ARR" AS
VARRAY ( 5000 ) OF VARCHAR2(20)
delete语句如下所示:
DELETE FROM ins_test
WHERE
( id,
name ) IN (
SELECT
t1.id,
t2.name
FROM
(
SELECT
column_value id,
ROWNUM r
FROM
TABLE (:1 )
) t1
FULL JOIN (
SELECT
column_value name,
ROWNUM r
FROM
TABLE (:2 )
) t2 ON t1.r = t2.r
)
该语句依赖TABLE
函数返回元素的顺序与它们存储在VARRAY
中的顺序相同。 TABLE函数返回的行的顺序是否保证与VARRAY元素的存储顺序相同?
已在例如How do I get the index of VARRAY items after converting to a table,但我找不到任何确凿的信息。
答案 0 :(得分:0)
是的,对于VARRAY,请参阅Varrays (Variable-Size Arrays)
从数据库中存储和检索varray时,其索引和元素顺序保持稳定。
请注意,对于Nested Tables,你却有相反的结果:
当您从数据库中存储和检索嵌套表时,嵌套表的索引和行顺序可能不会保持稳定。