У меня есть много таблиц на выбор и интерактивный отчет, имя таблицы которого нужно задать с помощью элемента страницы с именем P4_TABLE_NAME.
В других сообщениях говорится, что это можно сделать только с помощью PL/SQL. Поэтому я установил для источника интерактивного отчета значение «Тело функции, возвращающее SQL-запрос», а для языка — PL/SQL. Это код, который я тогда использовал:
declare
v_query varchar2(500);
begin
v_query := 'select * from '||:P4_TABLE_NAME ;
return v_query;
end;
Этот код выдает ошибку "недопустимое имя таблицы". Я также попробовал это в классическом отчете, и он дает ту же ошибку.
Это немного сложно, потому что отчет должен знать, какие столбцы вы выбираете, если вы не настроили его на использование общих имен столбцов. Это означает, что независимо от того, какую таблицу вы запрашиваете, имена столбцов будут col1, col2, col3
, ...
Вот как:
Я создал новую страницу с областью отчета Classic и элементом списка Select (который возвращает таблицы, которые есть в моей схеме).
источник отчета - это тело функции, которое возвращает запрос, как вы его выразили:
declare
v_query varchar2(500);
begin
v_query := 'select * from ' || :P4_TABLE_NAME;
return v_query;
end;
не забудьте установить «Использовать общие имена столбцов» на «Да»!
Пункт тривиальный:
Я установил его на «Отправить страницу» (чтобы, когда я выбираю новую таблицу, содержимое отчета менялось)
Выберите запрос элемента списка:
select table_name d, table_name r
from user_tables
order by table_name
Запустите страницу:
Насколько я могу судить, да.
Что ж, это сработало. Жаль, что это невозможно сделать с Interactive Report. Спасибо, в любом случае.
«Использовать общие имена столбцов» на «Да» доступно только для классического отчета?