В настоящее время я пытаюсь придумать способ возврата коллекции данных из пакета PL / SQL. Ниже представлено описание того, что указано в пакете и что я пытаюсь сделать:
Это спецификация пакета:
TYPE MYRECORD IS RECORD
(
ID NUMBER,
SOME_TEXT1 VARCHAR2(50),
SOME_TEXT2 VARCHAR2(50),
SOME_TEXT3 VARCHAR2(50),
SOME_TEXT4 VARCHAR2(255),
);
TYPE VTABLE is table of MYRECORD;
FUNCTION lookup_values (
ANUMBER IN VARCHAR2,
SOMETEXT1 IN VARCHAR2,
SOMETIME IN VARCHAR2,
) RETURN VTABLE
Моя проблема возникает, когда я делаю ссылки на экземпляр из VTABLE в функции:
Это в теле пакета:
FUNCTION Lookup_Values(
ANUMBER IN VARCHAR2,
SOME_TEXT1 IN VARCHAR2,
SOME_TIME IN VARCHAR2,
) RETURN VTABLE
IS
v_records VTABLE;
r_record MYRECORD;
CURSOR OUR_RECORDS IS
SELECT * FROM OUR_TABLE
BEGIN
OPEN OUR_RECORDS
LOOP
FETCH OUR_RECORDS
INTO r_record;
EXIT WHEN OUR_RECORDS %NOTFOUND;
-- I want to do something like the pseudo code below. Is it possible?
v_records.Extend(1);
v_records.ID := r_record.ID;
v_records.SOME_TEXT1 := r_record.SOMETEXT1;
v_records.SOME_TEXT2 := r_record.SOMETEXT2;
v_records.SOME_TEXT3 := r_record.SOMETEXT3;
v_records.SOME_TEXT4 := r_record.SOMETEXT4;
END LOOP;
RETURN (v_records);
END;
Надеюсь, мне удалось передать то, что я пытаюсь достичь. Извинения по этому поводу нет. Если что-то неясно, просто сообщите об этом, и я постараюсь уточнить.
С уважением, Пол Дж.