Спасибо за предоставленную дополнительную информацию.Я думаю, что вам нужно немного изменить свой выбор .....
см. https://docs.oracle.com/cd/B12037_01/appdev.101/b10807/11_dynam.htm для правильного синтаксиса.
Так что это должно быть что-то вроде строкииз нижеприведенного (нет среды для тестирования)
V_PARSED_QUERY := 'select DSQLMenu_record(label, value) from (' || v_parsed_query || ')';
execute immediate v_parsed_query bulk collect into v_results;
ОБНОВЛЕНИЕ
в ответ на ваш комментарий .... Я не уверен, почему вы быполучать одну запись.Согласно приведенному ниже фрагменту кода, я получаю две записи правильно
declare
type DSQLMenu_Table is table of DSQLMenu_Record;
V_RESULTS DSQLMenu_Table;
V_PARSED_QUERY VARCHAR2(8000) := 'select ''The Test Value A'' thelabel, ''TestValA'' thevalue, 1 thesort from dual union select ''The Test Value B'' thelabel, ''TestValB'' thevalue, 2 thesort from dual order by thesort';
begin
V_PARSED_QUERY := 'select DSQLMenu_Record(thelabel, thevalue) from (' || v_parsed_query || ')';
dbms_output.put_line(v_parsed_query);
execute immediate v_parsed_query bulk collect into v_results;
dbms_output.put_line(v_results.count);
for i in v_results.first..v_results.last loop
dbms_output.put_line(v_results(i).label);
end loop;
end;
результат вывода в дБмс
select DSQLMenu_Record(thelabel, thevalue) from (select 'The Test Value A' thelabel, 'TestValA' thevalue, 1 thesort from dual union select 'The Test Value B' thelabel, 'TestValB' thevalue, 2 thesort from dual order by thesort)
2
The Test Value A
The Test Value B