Аналогично работе, проделанной в этом посте Мне любопытно узнать, возможно ли сделать что-то подобное с составными типами данных.
Пример того, что япытаясь, но никогда не видел, чтобы это работало.
/* Is it possible somehow to instead do THIS? */
tst_proc_rec_type(p_rec => (sys.odcivarchar2list('dan','bob')
, sys.odcivarchar2list('anderson','bebop'))
);
По какой-то причине я продолжаю возвращаться к этой концепции, и за эти годы я никогда не видел способа заставить это работать ... скорее всегоиз-за того, что это просто НЕ возможно, но я решил обратиться к сообществу в надежде, что, возможно, это возможно, и, возможно, я просто делаю это неправильно.(Не в первый раз).
Пример рабочего кода и измененный код, показывающий, что я пытаюсь сделать.
DECLARE
TYPE t_tst_rec IS RECORD (
fname sys.odcivarchar2list,
lname sys.odcivarchar2list
);
iamrecord t_tst_rec; /* Declare record of type t_tst_rec */
PROCEDURE tst_proc_rec_type(p_rec t_tst_rec)
IS
BEGIN
FOR i IN 1..p_rec.lname.COUNT
LOOP
dbms_output.put_line(p_rec.lname(i) ||', ' || p_rec.fname(i));
END LOOP;
END;
BEGIN
iamrecord.fname := sys.odcivarchar2list('dan','bob');
iamrecord.lname := sys.odcivarchar2list('anderson','bebop');
tst_proc_rec_type(p_rec => iamrecord
);
/* Is it possible somehow to instead do THIS? */
-- tst_proc_rec_type(p_rec => (sys.odcivarchar2list('dan','bob')
-- , sys.odcivarchar2list('anderson','bebop'))
-- );
END;
Смотрите это в действии.