TABLE函数返回的行的顺序是否保证与VARRAY元素的存储顺序相同?

时间:2018-02-18 16:46:46

标签: oracle collections oracle12c

我正在使用类型为

的绑定变量执行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,但我找不到任何确凿的信息。

1 个答案:

答案 0 :(得分:0)

是的,对于VARRAY,请参阅Varrays (Variable-Size Arrays)

  

从数据库中存储和检索varray时,其索引和元素顺序保持稳定。

请注意,对于Nested Tables,你却有相反的结果:

  

当您从数据库中存储和检索嵌套表时,嵌套表的索引和行顺序可能不会保持稳定。