//执行如下过程,提示“ORA-06531 引用未初始化的集合”“ORA-06512 在 line 9”,怎么修改?DECLARE
TYPE Vs IS VARRAY(8) OF NUMBER;
cursor cursor1 is select lx,wxyy,sum(sl) as sl from dlwxb group by lx,wxyy;
s1 varchar(100);
s2 varchar(100);
s3 NUMBER;
v vs;
begin
V(0):=0;V(1):=0;V(2):=0;V(3):=0;V(4):=0;V(5):=0;V(6):=0;V(7):=0;
open cursor1;
fetch cursor1 into s1,s2,s3;
while cursor1%found loop
IF ((S1 = 'DL') AND (S2='更改项目')) THEN V(0) := s3; END IF;
IF ((S1 = 'GL') AND (S2='被盗修复')) THEN V(1) := s3; END IF;
IF ((S1 = 'DL') AND (S2='维修整治')) THEN V(2) := s3; END IF;
IF ((S1 = 'GL') AND (S2='更改项目')) THEN V(3) := s3; END IF;
IF ((S1 = 'DL') AND (S2='故障处理')) THEN V(4) := s3; END IF;
IF ((S1 = 'GL') AND (S2='维修整治')) THEN V(5) := s3; END IF;
IF ((S1 = 'DL') AND (S2='被盗修复')) THEN V(6) := s3; END IF;
IF ((S1 = 'GL') AND (S2='故障处理')) THEN V(7) := s3; END IF;
fetch cursor1 into s1,s2,s3;
end loop;
close cursor1;
S1 := TO_CHAR(V(0))||'/'||TO_CHAR(V(1))||'/'||TO_CHAR(V(2))||'/'||TO_CHAR(V(3))||'/';
S1 := S1||TO_CHAR(V(4))||'/'||TO_CHAR(V(5))||'/'||TO_CHAR(V(6))||'/'||TO_CHAR(V(7))||'/';
end;
TYPE Vs IS VARRAY(8) OF NUMBER;
cursor cursor1 is select lx,wxyy,sum(sl) as sl from dlwxb group by lx,wxyy;
s1 varchar(100);
s2 varchar(100);
s3 NUMBER;
v vs;
begin
V(0):=0;V(1):=0;V(2):=0;V(3):=0;V(4):=0;V(5):=0;V(6):=0;V(7):=0;
open cursor1;
fetch cursor1 into s1,s2,s3;
while cursor1%found loop
IF ((S1 = 'DL') AND (S2='更改项目')) THEN V(0) := s3; END IF;
IF ((S1 = 'GL') AND (S2='被盗修复')) THEN V(1) := s3; END IF;
IF ((S1 = 'DL') AND (S2='维修整治')) THEN V(2) := s3; END IF;
IF ((S1 = 'GL') AND (S2='更改项目')) THEN V(3) := s3; END IF;
IF ((S1 = 'DL') AND (S2='故障处理')) THEN V(4) := s3; END IF;
IF ((S1 = 'GL') AND (S2='维修整治')) THEN V(5) := s3; END IF;
IF ((S1 = 'DL') AND (S2='被盗修复')) THEN V(6) := s3; END IF;
IF ((S1 = 'GL') AND (S2='故障处理')) THEN V(7) := s3; END IF;
fetch cursor1 into s1,s2,s3;
end loop;
close cursor1;
S1 := TO_CHAR(V(0))||'/'||TO_CHAR(V(1))||'/'||TO_CHAR(V(2))||'/'||TO_CHAR(V(3))||'/';
S1 := S1||TO_CHAR(V(4))||'/'||TO_CHAR(V(5))||'/'||TO_CHAR(V(6))||'/'||TO_CHAR(V(7))||'/';
end;
数组赋值语句,改成以下
v vs:= Vs(0,1,2,3,4,5,6);
v vs:=vs(1,2,3,4,5,6,7,8)
CREATE TABLE dlwxb(
lx VARCHAR2(100),
wxyy VARCHAR2(100),
sl NUMBER(18,0) );INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','更改项目',100);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','更改项目',200);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','更改项目',300);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','被盗修复',88);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','被盗修复',76);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','维修整治',44);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','维修整治',25);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','更改项目',21);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','更改项目',15);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','故障处理',20);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','故障处理',50);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','维修整治',9);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','维修整治',7);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','被盗修复',17);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('DL','被盗修复',18);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','故障处理',17);
INSERT INTO dlwxb(lx,wxyy,sl) VALUES('GL','故障处理',18);----------------------------------------------------------------------------------------------
DECLARE
TYPE vs IS VARRAY(8) OF NUMBER;
CURSOR cursor1 is SELECT lx,wxyy,sum(sl) as sl FROM dlwxb group by lx,wxyy;
s1 varchar(200);
s2 varchar(200);
s3 NUMBER;
v vs := vs(0,0,0,0,0,0,0,0);
BEGIN
open cursor1;
fetch cursor1 into s1,s2,s3;
while cursor1%found loop
IF ((S1 = 'DL') AND (S2='更改项目')) THEN V(1) := s3; END IF;
IF ((S1 = 'GL') AND (S2='被盗修复')) THEN V(2) := s3; END IF;
IF ((S1 = 'DL') AND (S2='维修整治')) THEN V(3) := s3; END IF;
IF ((S1 = 'GL') AND (S2='更改项目')) THEN V(4) := s3; END IF;
IF ((S1 = 'DL') AND (S2='故障处理')) THEN V(5) := s3; END IF;
IF ((S1 = 'GL') AND (S2='维修整治')) THEN V(6) := s3; END IF;
IF ((S1 = 'DL') AND (S2='被盗修复')) THEN V(7) := s3; END IF;
IF ((S1 = 'GL') AND (S2='故障处理')) THEN V(8) := s3; END IF;
fetch cursor1 into s1,s2,s3;
end loop;
close cursor1;
S1 := TO_CHAR(V(1))||'/'||TO_CHAR(V(2))||'/'||TO_CHAR(V(3))||'/'||TO_CHAR(V(4))||'/';
S1 := S1||TO_CHAR(V(5))||'/'||TO_CHAR(V(6))||'/'||TO_CHAR(V(7))||'/'||TO_CHAR(V(8))||'/';
dbms_output.put_line(S1);
END;
/