如何解决我收到错误下标超出限制我如何解决它?
我知道这行代码表示 empName(COUNTER) := ENAME;
,但我似乎无法弄清楚问题是什么。
SET SERVEROUTPUT ON;
DECLARE
TYPE nameList IS VARRAY (10) OF VARCHAR2(10);
empName nameList := nameList();
ENAME VARCHAR2(10);
SAL NUMBER(7,2);
COUNTER NUMBER := 0;
CURSOR C1 IS
SELECT ENAME,SAL
FROM EMP
WHERE ROWNUM < 11;
BEGIN
FOR person IN C1
LOOP
ENAME := person.ENAME;
SAL := person.SAL;
empName(COUNTER) := ENAME;
COUNTER := COUNTER + 1;
END LOOP;
END;
/
解决方法
两个错误:
- 可变数组索引从 1 开始,而不是 0(第 6 行)
- 你忘记扩展它(第 14 行)
SQL> DECLARE
2 TYPE nameList IS VARRAY (20) OF VARCHAR2(10);
3 empName nameList := nameList();
4 ENAME VARCHAR2(10);
5 SAL NUMBER(7,2);
6 COUNTER NUMBER := 1; --> not 0 but 1
7 CURSOR C1 IS SELECT ENAME,SAL
8 FROM EMP
9 WHERE ROWNUM < 11;
10
11 BEGIN
12 FOR person IN C1
13 LOOP
14 empName.extend; --> you're missing this
15 ENAME := person.ENAME;
16 SAL := person.SAL;
17 empName(COUNTER) := ENAME;
18 COUNTER := COUNTER + 1;
19 END LOOP;
20 END;
21 /
PL/SQL procedure successfully completed.
SQL>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。