下面是我创建的存储过程,传入的对象是一个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;
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;
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行。