PL/SQL 关联数组验证索引是不是存在

Posted

技术标签:

【中文标题】PL/SQL 关联数组验证索引是不是存在【英文标题】:PL/SQL Associative array validate if index existPL/SQL 关联数组验证索引是否存在 【发布时间】:2013-12-03 13:30:58 【问题描述】:

我有这个关联数组 3-d

type v_arr_class is table of varchar2(255) index by varchar2(255);
type v_arr_component is table of v_arr_class index by varchar2(255);
type v_arr_property is table of v_arr_component index by varchar2(255);

v_arr_local_rec v_arr_property;

我需要验证索引是否存在

if(v_arr_local_rec('class')('component')('property') exist) then

do this... 

end if

没有找到关于关联数组的太多信息。

提前致谢。

【问题讨论】:

【参考方案1】:

您必须执行 3 次存在测试,以确保不会触发 NO_DATA_FOUND 错误:

SQL> DECLARE
  2     TYPE t_arr_class IS TABLE OF VARCHAR2(255) INDEX BY VARCHAR2(255);
  3     TYPE t_arr_component IS TABLE OF t_arr_class INDEX BY VARCHAR2(255);
  4     TYPE t_arr_property IS TABLE OF t_arr_component INDEX BY VARCHAR2(255);
  5     v_arr_local_rec t_arr_property;
  6  BEGIN
  7     IF v_arr_local_rec.EXISTS('class')
  8        AND v_arr_local_rec('class').EXISTS('component')
  9        AND v_arr_local_rec('class')('component').EXISTS('property')
 10     THEN
 11        dbms_output.put_line('true');
 12     ELSE
 13        dbms_output.put_line('false');
 14     END IF;
 15  END;
 16  /

false

PL/SQL procedure successfully completed

【讨论】:

以上是关于PL/SQL 关联数组验证索引是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/SQL 中重置关联数组?

SQL记录-PLSQL集合

PL/SQL集合(table)嵌套表操作实例讲解实例

从 PL/SQL 关联数组中的元素获取不同的值

更新另一列时,使用列名作为 PL/SQL 关联数组的键

PL/SQL数组