Я пытаюсь создать что-то более сложное. Чтобы не было большого количества запросов и точек обслуживания, идея состоит в том, чтобы использовать представления.
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: Parsing returned query results in "ORA-20999: Failed to parse SQL query!
ORA-06550: line 12, column 23: ORA-00936: missing expression
"
Я даже вставил содержимое переменной sQuery во временную таблицу, и результат совпадает с содержимым представления.
Я использовал параметризованное представление, но когда я возвращаю запрос непосредственно в oracle apex, отчет становится намного быстрее.
Если вы передадите Squery: = 'Select 1 from dual where 1 =: P1_ITEM'
, возврат будет успешным. Есть какие-нибудь идеи о том, как обойти ошибку и использовать этот метод?