Я пытаюсь создать что-то более сложное. Чтобы не иметь много запросов и точек обслуживания, идея состоит в том, чтобы использовать представления.
create or replace view vw_teste as
Select 1
from dual
where 1 = '#VARIABLE_FIX';
Я пытаюсь сделать следующее:
DECLARE
sQuery VARCHAR2(32767);
sView VARCHAR2(32767);
BEGIN
SELECT a.TEXT
into sView
FROM all_views a
where a.VIEW_NAME = 'VW_TESTE';
sQuery := REPLACE(sView, '''#VARIABLE_FIX''', :P1_ITEM);
return(sQuery);
END;
Возвращенные ошибки:
"ORA-20999: синтаксический анализ возвращенных результатов запроса в" ORA-20999: не удалось проанализировать SQL-запрос!
ORA-06550: строка 12, столбец 23: ORA-00936: пропущенное выражение
"
Я даже вставил содержимое переменной sQuery во временную таблицу, и результат верныйс содержимым представления.
Я использовал параметризованное представление, но когда я возвращаю запрос непосредственно в oracle apex, производительность отчета намного выше.
Если вы передаете Squery: ='Select 1 from dual where 1 =: P1_ITEM'
, возвращение прошло успешно. Любые идеи о том, как обойти ошибку и использовать этот метод?