这一句有问题
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>

解决方案 »

  1.   

    DECLARE
     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;
    /
    这又错在哪里
      

  2.   

    看上去没有错,用pl/sql developer报什么错