完整DECLARE
  TYPE dept_table_type IS TABLE OF 
       dept%ROWTYPE INDEX BY BINARY_INTEGER;
  my_dname_table dept_table_type;
  v_count number(2) :=4;
BEGIN
  FOR int IN 1 .. v_count LOOP
    SELECT * INTO my_dname_table(int) FROM dept WHERE deptno=int*10;
  END LOOP;
  FOR int IN my_dname_table.FIRST .. my_dname_table.LAST LOOP
  DBMS_OUTPUT.PUT_LINE('Department number: '||my_dname_table(int).deptno);
  DBMS_OUTPUT.PUT_LINE('Department name: '|| my_dname_table(int).dname);
  END LOOP;
END;
不明白  TYPE dept_table_type IS TABLE OF 
       dept%ROWTYPE INDEX BY BINARY_INTEGER;
  my_dname_table dept_table_type;和  SELECT * INTO my_dname_table(int) FROM dept WHERE deptno=int*10;
上面的定义、声明和下面的my_dname_table(int)不懂,这个括号int有什么关系?
那位懂的前辈说给我听一下,谢谢!

解决方案 »

  1.   

    TYPE dept_table_type IS TABLE OF 
           dept%ROWTYPE INDEX BY BINARY_INTEGER;
    --这里声明表对象dept_table_type ,相当于二维数组,这个对象的类型与dept表的行记录类型是一样的my_dname_table dept_table_type;
    --这里差不多就是定义表对象的一个实例吧SELECT * INTO my_dname_table(int) FROM dept WHERE deptno=int*10;
    --这是从dept表中取出deptno等于int*10的一条记录,赋值给my_dname_table(int),这里的int是个变量,建议变量名称不要与数据类型int同名!!!