在Pl/SQL中使用数组时出现下标超出限制错误
下面的程序访问PL/SQL中的数组,但是当我执行该过程时,它会给我一个下标超出限制的错误。为什么会发生这种情况?我看这个程序没有什么问题在Pl/SQL中使用数组时出现下标超出限制错误,sql,oracle,Sql,Oracle,下面的程序访问PL/SQL中的数组,但是当我执行该过程时,它会给我一个下标超出限制的错误。为什么会发生这种情况?我看这个程序没有什么问题 CREATE OR REPLACE PROCEDURE ANALYSIS IS CURSOR EMPLOYEES IS SELECT * FROM EMPLOYEE; CURSOR BILLS IS SELECT * FROM BILL; WORKER EMPLOYEE%ROWTYPE; CASH BILL%ROWTYPE; TYPE SALARY IS
CREATE OR REPLACE PROCEDURE ANALYSIS
IS
CURSOR EMPLOYEES IS
SELECT * FROM EMPLOYEE;
CURSOR BILLS IS
SELECT * FROM BILL;
WORKER EMPLOYEE%ROWTYPE;
CASH BILL%ROWTYPE;
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES SALARY;
BEGIN
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
OPEN EMPLOYEES;
OPEN BILLS;
LOOP
FETCH EMPLOYEES INTO WORKER;
EXIT WHEN EMPLOYEES%NOTFOUND;
IF WORKER.BRANCHID=1 THEN
SALARIES(1):=SALARIES(1)+WORKER.SALARY;
ELSIF WORKER.BRANCHID=2 THEN
SALARIES(2):=SALARIES(2)+WORKER.SALARY;
ELSIF WORKER.BRANCHID=3 THEN
SALARIES(3):=SALARIES(3)+WORKER.SALARY;
ELSIF WORKER.BRANCHID=4 THEN
SALARIES(4):=SALARIES(4)+WORKER.SALARY;
END IF;
END LOOP;
END;
您已经创建了最多可以包含4个元素的数组:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后,您已经填充了4个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后您尝试将其扩展为另外4个元素,即8个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
这就是您得到错误的原因:
SQL> DECLARE
2 TYPE SALARY IS VARRAY(4) OF NUMBER(5);
3 SALARIES SALARY;
4 BEGIN
5 SALARIES:=SALARY(1,1,1,1);
6 SALARIES.EXTEND(4);
7 END;
8 /
DECLARE
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at line 6
你不需要延长线
注意:还有几点:
您已经创建了最多可以包含4个元素的数组:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后,您已经填充了4个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后您尝试将其扩展为另外4个元素,即8个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
这就是您得到错误的原因:
SQL> DECLARE
2 TYPE SALARY IS VARRAY(4) OF NUMBER(5);
3 SALARIES SALARY;
4 BEGIN
5 SALARIES:=SALARY(1,1,1,1);
6 SALARIES.EXTEND(4);
7 END;
8 /
DECLARE
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at line 6
你不需要延长线
注意:还有几点:
您已经创建了最多可以包含4个元素的数组:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后,您已经填充了4个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后您尝试将其扩展为另外4个元素,即8个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
这就是您得到错误的原因:
SQL> DECLARE
2 TYPE SALARY IS VARRAY(4) OF NUMBER(5);
3 SALARIES SALARY;
4 BEGIN
5 SALARIES:=SALARY(1,1,1,1);
6 SALARIES.EXTEND(4);
7 END;
8 /
DECLARE
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at line 6
你不需要延长线
注意:还有几点:
您已经创建了最多可以包含4个元素的数组:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后,您已经填充了4个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
然后您尝试将其扩展为另外4个元素,即8个元素:
TYPE SALARY IS VARRAY(4) OF NUMBER(5);
SALARIES:=SALARY(1,1,1,1);
SALARIES.EXTEND(4);
这就是您得到错误的原因:
SQL> DECLARE
2 TYPE SALARY IS VARRAY(4) OF NUMBER(5);
3 SALARIES SALARY;
4 BEGIN
5 SALARIES:=SALARY(1,1,1,1);
6 SALARIES.EXTEND(4);
7 END;
8 /
DECLARE
*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at line 6
你不需要延长线
注意:还有几点:
哦,好的!我刚刚尝试了一些东西,当我增加数组中的元素数时,错误消失了哦,好吧!我刚刚尝试了一些东西,当我增加数组中的元素数时,错误消失了哦,好吧!我刚刚尝试了一些东西,当我增加数组中的元素数时,错误消失了哦,好吧!我刚刚尝试了一些东西,我突然意识到,当我增加数组中的元素数时,错误消失了,这与你的问题没有直接关系,但是当一个
SELECT。。分组方式
就足够了吗?我打算进一步处理。我是sql的新手:P我不明白如何使用SELECT。。分组依据
选择branchid,按branchid从员工分组中选择SUM(薪资)作为薪资
与您的问题没有直接关系,但在选择单个时,为什么要使用循环。。分组方式
就足够了吗?我打算进一步处理。我是sql的新手:P我不明白如何使用SELECT。。分组依据
选择branchid,按branchid从员工分组中选择SUM(薪资)作为薪资
与您的问题没有直接关系,但在选择单个时,为什么要使用循环。。分组方式
就足够了吗?我打算进一步处理。我是sql的新手:P我不明白如何使用SELECT。。分组依据
选择branchid,按branchid从员工分组中选择SUM(薪资)作为薪资
与您的问题没有直接关系,但在选择单个时,为什么要使用循环。。分组方式
就足够了吗?我打算进一步处理。我是sql的新手:P我不明白如何使用SELECT。。分组依据
选择branchid,按branchid从员工组中选择总和(薪资)作为薪资