我正在尝试在一个查询中将数据选择到 pl/sql 关联数组中。我知道我可以使用硬编码密钥来做到这一点,但我想看看是否有某种方法可以引用另一列(密钥列)。
DECLARE
TYPE VarAssoc IS TABLE OF varchar2(2) INDEX BY varchar2(3);
vars VarAssoc;
BEGIN
SELECT foo, bar INTO vars(foo) FROM schema.table;
END;
我收到一条错误消息,提示我执行此操作时必须声明 foo 。有没有某种方法可以在单个查询中创建我的关联数组,或者我是否需要依靠 FOR 循环?
看看你对 APC 答案的评论,听起来你自己想出了这个办法。但我想无论如何我都会为未来的搜索者提供答案。
这是更简单的代码,但不具有使用 BULK COLLECT 的速度优势。只需循环查询返回的行并单独设置关联数组中的元素即可。
DECLARE
TYPE VarAssoc IS TABLE OF varchar2(200) INDEX BY varchar2(30);
vars VarAssoc;
BEGIN
FOR r IN (SELECT table_name,tablespace_name FROM user_tables) LOOP
vars(r.table_name) := r.tablespace_name;
END LOOP;
dbms_output.put_line( vars('JAVA$OPTIONS') );
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)