这一句有问题
FOR j IN 1..i
LOOP
DBMS_OUTPUT.PUT(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal);
END LOOP; 改成
FOR j IN 1..i
LOOP
DBMS_OUTPUT.PUT_LINE(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal);
END LOOP; 运行如下:
SQL> SET SERVEROUTPUT ON
SQL> declare
2 type demp is record
3 (
4 empno emp.empno%type,
5 ename emp.ename%type,
6 sal emp.sal%type
7 );
8 i BINARY_INTEGER:=1;
9 type emp_tab is table of demp index by binary_integer;
10 vemp emp_tab;
11 cursor cl is select empno,ename,sal from emp;
12 begin
13 for x in cl loop
14 vemp(i).empno:=x.empno;
15 vemp(i).ename:=x.ename;
16 vemp(i).sal:=x.sal;
17 i:=i+1;
18 end loop;
19 DBMS_OUTPUT.PUT_LINE('插入记录:');
20 vemp(i).empno:=9999;
21 vemp(i).ename:='TOM';
22 vemp(i).sal:=1111;
23 FOR j IN 1..i LOOP
24 DBMS_OUTPUT.PUT_LINE(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j
l);
25 END LOOP;
26 DBMS_OUTPUT.PUT_LINE('删除第5、6条记录:');
27 for j in 5..i-2 loop
28 vemp(j).empno:=vemp(j+2).empno;
29 vemp(j).ename:=vemp(j+2).ename;
30 vemp(j).sal:=vemp(j+2).sal;
31 end loop;
32 for x in reverse i-2..i loop
33 vemp(x).empno:=null;
34 vemp(x).ename:=null;
35 vemp(x).sal:=null;
36 end loop;
37 FOR j IN 1..i-2 LOOP
38 DBMS_OUTPUT.PUT(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal
39 END LOOP;
40 end;
41 /
插入记录:
7369 SMITH 800
7499 ALLEN 1600
7521 WARD 1250
7566 JONES 2975
7654 MARTIN 1250
7698 BLAKE 2850
7782 CLARK 2450
7788 SCOTT 3000
7839 KING 5000
7844 TURNER 1500
7876 ADAMS 1100
7900 JAMES 950
7902 FORD 3000
7934 MILLER 1300
1000
1002 test 1000
1003 test 1000
9999 TOM 1111
删除第5、6条记录:PL/SQL procedure successfully completed.SQL>
FOR j IN 1..i
LOOP
DBMS_OUTPUT.PUT(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal);
END LOOP; 改成
FOR j IN 1..i
LOOP
DBMS_OUTPUT.PUT_LINE(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal);
END LOOP; 运行如下:
SQL> SET SERVEROUTPUT ON
SQL> declare
2 type demp is record
3 (
4 empno emp.empno%type,
5 ename emp.ename%type,
6 sal emp.sal%type
7 );
8 i BINARY_INTEGER:=1;
9 type emp_tab is table of demp index by binary_integer;
10 vemp emp_tab;
11 cursor cl is select empno,ename,sal from emp;
12 begin
13 for x in cl loop
14 vemp(i).empno:=x.empno;
15 vemp(i).ename:=x.ename;
16 vemp(i).sal:=x.sal;
17 i:=i+1;
18 end loop;
19 DBMS_OUTPUT.PUT_LINE('插入记录:');
20 vemp(i).empno:=9999;
21 vemp(i).ename:='TOM';
22 vemp(i).sal:=1111;
23 FOR j IN 1..i LOOP
24 DBMS_OUTPUT.PUT_LINE(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j
l);
25 END LOOP;
26 DBMS_OUTPUT.PUT_LINE('删除第5、6条记录:');
27 for j in 5..i-2 loop
28 vemp(j).empno:=vemp(j+2).empno;
29 vemp(j).ename:=vemp(j+2).ename;
30 vemp(j).sal:=vemp(j+2).sal;
31 end loop;
32 for x in reverse i-2..i loop
33 vemp(x).empno:=null;
34 vemp(x).ename:=null;
35 vemp(x).sal:=null;
36 end loop;
37 FOR j IN 1..i-2 LOOP
38 DBMS_OUTPUT.PUT(vemp(j).empno||' '||vemp(j).ename||' '||vemp(j).sal
39 END LOOP;
40 end;
41 /
插入记录:
7369 SMITH 800
7499 ALLEN 1600
7521 WARD 1250
7566 JONES 2975
7654 MARTIN 1250
7698 BLAKE 2850
7782 CLARK 2450
7788 SCOTT 3000
7839 KING 5000
7844 TURNER 1500
7876 ADAMS 1100
7900 JAMES 950
7902 FORD 3000
7934 MILLER 1300
1000
1002 test 1000
1003 test 1000
9999 TOM 1111
删除第5、6条记录:PL/SQL procedure successfully completed.SQL>
TYPE emprec IS RECORD
(
EMPNO emp.empno%TYPE,
ENAME emp.ename%TYPE,
SAL emp.sal%TYPE
);
i BINARY_INTEGER:=1;
TYPE emp_tab IS TABLE OF EMPREC INDEX BY binary_integer;
vemp EMP_TAB;
CURSOR c1 IS SELECT empno,ename,sal from emp;
BEGIN
FOR x IN c1
LOOP
vemp(i).empno:=x.empno;
vemp(i).ename:=x.ename;
vemp(i).sal:=x.sal;
i:=i+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('插入记录:');
vemp(i).empno:=1000;
vemp(i).ename:='Goldens';
vemp(i).sal:=8888;
END;
/
这又错在哪里