使用 PL/SQL,假设我们已经声明了一个嵌套表类型及其实例,如下所示:
type nested_tab is table of pls_integer;
tab nested_tab;.
然后我们可以按如下方式初始化我们的嵌套表:
tab := nested_tab(1, 2, 3);.
我们可以做类似的事情来初始化关联数组吗?
换句话说,对于以下关联数组:
type associative_tab is table of varchar2(100) index by pls_integer;
a_tab associative_tab;
有没有比这更短的方法:
a_tab(1) := 'hello';
a_tab(2) := 'world';
...
a_tab(100) := '100th string';
用于初始化?
更新了 18c 及以上的答案
在 18c 中,Oracle 引入了限定表达式,也可用于初始化关联数组。文档中的示例:
DECLARE
TYPE t_aa IS TABLE OF BOOLEAN INDEX BY PLS_INTEGER;
v_aa1 t_aa := t_aa(1=>FALSE,
2=>TRUE,
3=>NULL);
BEGIN
DBMS_OUTPUT.PUT_LINE(print_bool(v_aa1(1)));
DBMS_OUTPUT.PUT_LINE(print_bool(v_aa1(2)));
DBMS_OUTPUT.PUT_LINE(print_bool(v_aa1(3)));
END;
Run Code Online (Sandbox Code Playgroud)
另请参阅Steven Feuerstein的Easy Initializing for Records and Arrays中的关联数组的限定表达式一章
原始答案高达 12c
否 - 没有初始化关联数组的快捷语法。与变量和嵌套表不同,关联数组没有集合构造函数。
相反,您应该编写自己的初始化函数。请参阅声明关联数组常量中的示例。
| 归档时间: |
|
| 查看次数: |
8570 次 |
| 最近记录: |