我有一个 VARRAY,我想通过使用循环向该 VARRAY 添加元素。这是我到目前为止所尝试过的。
DECLARE
TYPE code_array_ IS VARRAY(26) OF VARCHAR2(6);
codes_ code_array_;
BEGIN
FOR i IN 1..26 LOOP
codes_(i) := dbms_random.string('U',6);
END LOOP;
END;
上面的代码给了我一个错误
“ORA-06531:引用未初始化的集合”
正如错误消息所示,您需要初始化集合变量 http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm#LNPLS00504:
...
BEGIN
codes_ := code_array_();
...
但您还需要调整它的大小,或者每次循环时使用一个扩展:
FOR i IN 1..26 LOOP
codes_.extend;
...
或者在开始之前进行一次性扩展:
...
BEGIN
codes_ := code_array_();
...
codes_.extend(26);
FOR i IN 1..26 LOOP
...
您还可以使用后扩展大小来控制循环,以再次保存硬编码 26:
DECLARE
TYPE code_array_ IS VARRAY(26) OF VARCHAR2(6);
codes_ code_array_;
BEGIN
codes_ := code_array_();
codes_.extend(26);
FOR i IN 1..codes_.count LOOP
codes_(i) := dbms_random.string('U',6);
END LOOP;
END;
/
PL/SQL procedure successfully completed.
阅读有关收藏的更多信息 http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)