问题描述
大家好,
这里是我的简单代码:
编译进行得很好,但我无法运行此过程!
这是我执行的代码:
和引发错误: ORA-06533: Subscript超出计数
我在哪里失败?
非常感谢,
盖亚
这里是我的简单代码:
CREATE OR REPLACE TYPE num_array IS TABLE OF NUMBER;
CREATE OR REPLACE PROCEDURE proc1 (p_array IN num_array)
AS
i BINARY_INTEGER :=1;
BEGIN
FOR i IN p_array.first .. p_array.last
LOOP
DBMS_OUTPUT.put_line (p_array (i));
END LOOP;
DBMS_OUTPUT.put_line (p_array.COUNT);
END;
编译进行得很好,但我无法运行此过程!
这是我执行的代码:
DECLARE
P_ARRAY NUM_ARRAY := NUM_ARRAY(null);
BEGIN
P_ARRAY(1) := 15;
P_ARRAY(2) := 54;
P_ARRAY(3) := 56;
PROC1(
P_ARRAY => P_ARRAY
);
END;
和引发错误: ORA-06533: Subscript超出计数
我在哪里失败?
非常感谢,
盖亚
专家解答
你的程序很好。嵌套表类型与plsql关联数组 * 相似 *,但不完全相同。对于嵌套表,您需要根据需要显式增长表以保存元素。因此
SQL> CREATE OR REPLACE TYPE num_array IS TABLE OF NUMBER; 2 / Type created. SQL> SQL> DECLARE 2 P_ARRAY NUM_ARRAY := NUM_ARRAY(null); 3 BEGIN 4 5 P_ARRAY(1) := 15; 6 P_ARRAY(2) := 54; 7 P_ARRAY(3) := 56; 8 9 END; 10 / DECLARE * ERROR at line 1: ORA-06533: Subscript beyond count ORA-06512: at line 6 SQL> SQL> SQL> DECLARE 2 P_ARRAY NUM_ARRAY := NUM_ARRAY(null); 3 BEGIN 4 P_ARRAY.extend(3); -- add three elements 5 P_ARRAY(1) := 15; 6 P_ARRAY(2) := 54; 7 P_ARRAY(3) := 56; 8 9 END; 10 / PL/SQL procedure successfully completed. SQL> SQL> SQL> DECLARE 2 P_ARRAY NUM_ARRAY := NUM_ARRAY(null); 3 BEGIN 4 P_ARRAY.extend; -- add 1 element at a time 5 P_ARRAY(1) := 15; 6 P_ARRAY.extend; 7 P_ARRAY(2) := 54; 8 P_ARRAY.extend; 9 P_ARRAY(3) := 56; 10 11 END; 12 / PL/SQL procedure successfully completed.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




