下面是我创建的存储过程,传入的对象是一个Type
CREATE TYPE department_type AS OBJECT (
LOCATION VARCHAR2 (50)
); CREATE TYPE dept_array AS TABLE OF department_type; CREATE OR REPLACE PACKAGE objecttype AS
  PROCEDURE insert_object (d dept_array);
END objecttype; CREATE OR REPLACE PACKAGE BODY objecttype
AS
PROCEDURE insert_object (d dept_array)
AS
BEGIN
FOR i IN d.FIRST..d.LAST
LOOP
INSERT INTO tb
VALUES (d(i).location);
END LOOP;
END insert_object;
END objecttype; 

解决方案 »

  1.   

    SQL> select * from tb;未选定行SQL> DECLARE
      2    d_arr dept_array := dept_array();
      3  BEGIN
      4    --先给嵌套表初始化一些数据
      5    FOR i IN 1 .. 10 LOOP
      6      d_arr.extend;
      7      d_arr(i) := department_type('arr:' || i);
      8    END LOOP;
      9    --调用存储过程
     10    objecttype.insert_object(d_arr);
     11  END;
     12  /PL/SQL 过程已成功完成。SQL> commit;提交完成。SQL> select * from tb;LOCATION
    --------------------------------------------------
    arr:1
    arr:2
    arr:3
    arr:4
    arr:5
    arr:6
    arr:7
    arr:8
    arr:9
    arr:10已选择10行。