Я попытался реализовать страницу в APEX (19.2), где пользователь должен сделать ввод, который является именем столбца. Эти входные данные должны ограничивать оператор выбора в предложении where и являются следующими:
select * FROM UEBERSICHT where
:P904_COLUMN = :P904_AUSDRUCK;
: P904_COLUMN и: P904_AUSDRUCK; оба элемента APEX, которые необходимы для ввода пользователем.
Когда я пишу имя столбца вместо: P904_COLUMN, я получаю вывод, в противном случае - нет. Но, как гласит заголовок, я хочу реализовать динамический столбец c.
Я также попробовал его с PL / SQL, который возвращает оператор SQL -, подобный следующему:
declare
statement varchar2(4000);
begin
statement:= 'SELECT * FROM UEBERSICHT where
:P904_COLUMN = :P904_AUSDRUCK;';
return statement;
end;
Другой подход состоял в том, чтобы сначала сохранить входные данные в переменной и записать имя переменной в SQL - выражение:
declare
statement varchar2(4000);
spalte varchar2(50);
begin
if :P904_COLUMN = '"Gesellschaft"' then spalte := '"Gesellschaft"'; end if;
statement:= 'SELECT * FROM UEBERSICHT where
'||spalte||' = :P904_AUSDRUCK;';
return statement;
end;
Здесь я получаю эту синтаксическую ошибку, которая не должна отображаются нормально: «ORA-20999: синтаксический анализ возвращенных результатов запроса в» ORA-20999: не удалось проанализировать запрос SQL!
ORA-06550: строка 5, столбец 6: ORA-00936: отсутствует выражение
"."
Как решить эту проблему?
PS: Да, я отправляю все элементы APEX.
Обновление: отладка показывает мне, что я получаю входные данные, но интерактивный отчет не дает никакого вывода.