ORA-00923: ключевое слово FROM не найдено там, где ожидалось, в Oracle APEX

Я пытаюсь нарисовать диаграмму с помощью редактора запросов sql, используя динамический sql. Я построил часть запроса на странице 4 и хотел бы использовать ее на странице 5.

На странице 4 я построил запрос, передающий параметры в процедуру сохранения в пакет в базе данных, получив часть запроса. Мне нужно использовать этот способ

Это часть запроса структуры:

:P4_STRINGA_VIEW = from VIEW_OEE_MAC_MENSILE where V_COD_MACCHINA= 'REP03' and V_ANNO = '2020';

введите здесь описание изображения

Я попытался построить запрос без ключевого слова «От», и вот результат: < img src = "https://i.stack.imgur.com/kIHsS.png" alt = "введите описание изображения здесь">

Я видел множество примеров динамического sql, в большинстве из них используется код pl \ sql. Параметры серии диаграмм для получения данных из базы данных: запрос sql и тело функции PL \ sql для возврата запроса sql. Я пробовал оба, но всегда получал ту же ошибку.

Я искал примеры, документацию по этому поводу, но не нашел решения своей проблемы


person Scripta14    schedule 28.05.2020    source источник


Ответы (1)


Этот пример работает в SQL * Plus; должен и в Apex.

Функция (у вас будет просто тело функции; используйте declare вместо первой опубликованной мною строки), которая возвращает оператор select, выглядит следующим образом; Я жестко запрограммировал p4_stringa_view, потому что не знаю, как вы это получили:

SQL> create or replace function f_test return varchar2 as
  2    p4_stringa_view varchar2(200) := 'from emp where deptno = 10';
  3    retval varchar2(200);
  4  begin
  5    return q'[select 'A' label, ename as V_OEE ]' || p4_stringa_view;
  6  end;
  7  /

Function created.

При выполнении возвращается

SQL> select f_test from dual;

F_TEST
--------------------------------------------------------------------------------
select 'A' label, ename as V_OEE from emp where deptno = 10

Сам оператор select работает?

SQL> select 'A' label, ename as V_OEE from emp where deptno = 10  ;

L V_OEE
- ----------
A CLARK
A KING
A MILLER

SQL>

Да.


person Littlefoot    schedule 28.05.2020
comment
Спасибо за Ваш ответ. Я пробую ваше решение, но, к сожалению, не могу решить свою проблему. Я изменил ваше решение. Я передаю параметр функции. В разработчике sql я добавил функцию в пакет, и в апексе я написал в редакторе запросов sql этот оператор select 'A' label, apex_504.P5_READ_MULTIVALUES (: P4_STRINGA_VIEW) из двойного; но я продолжаю получать это сообщение об ошибке : ORA-04062: метка времени пакета APEX_504; Это было изменено. Первоначально функция возвращала число, но и в этом случае я получил сообщение об ошибке. - person Scripta14; 29.05.2020