Вы можете передать тип коллекции Oracle в качестве параметра.
Коллекция может быть парой ключ-значение, такой как ассоциативный массив, проиндексированный varchar.
В этом примере индексом может быть SID, а значением может быть SNAME.
Прочтите здесь, чтобы узнать о коллекциях: http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/05_colls.htm
А вот для ассоциативных массивов, в частности: http://www.oracle -base.com / article / 9i / AssociativeArrays9i.php
В качестве альтернативы вы можете передать два параметра: обе коллекции, содержащие значения varchar (например, типы DBMS_SQL.VARCHAR2_TABLE), первая содержит SID, а вторая содержит соответствующие значения SNAME, они будут эффективно связаны своим индексным номером.
Смотрите здесь для определенных типов DBMS_SQL: http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sql.htm
Надеюсь, это поможет ...
EDIT:
Если вы объявляете все типы и выполняете все действия в пакете, то:
-- Declare type
TYPE student_coltype IS TABLE OF student%ROWTYPE
INDEX BY BINARY_INTEGER;
-- Declare variable of type
student_col student_coltype;
Если вам нужны глобальные типы, вам придется явно объявить столбцы:
CREATE TYPE student_rec
AS OBJECT
(SID VARCHAR2(10),
SNAME VARCHAR2(50));
CREATE TYPE student_collection
AS TABLE OF student_rec;
Затем вы можете использовать тип коллекции учащихся в вашей БД для передачи коллекций данных учащихся в процедуры и функции и из них.
Документы для использования объектов оракула здесь: http://docs.oracle.com/cd/B19306_01/appdev.102/b14260/adobjint.htm