Как получить значение по умолчанию для блока данных, в котором генерируются формы оракула, с помощью действия Enter-query - PullRequest
0 голосов
/ 08 сентября 2018

Я работаю с оракулом 6i.

Просто я использую блок базы данных с этими элементами:

Employees:    employee_id , job_id , department_id , manager_id

примечание: сотрудники - это имя блока данных.

Например: когда конечный пользователь нажимает кнопку ввода запроса и пишет 50 в элементе department_id, а затем нажимает кнопку выполнения запроса; Блок данных вернет всех сотрудников, которые находятся в отделе 50.

Мой вопрос: Как я могу получить ГЛАВНУЮ ОГОВОРКУ, которую формы оракула генерируют при возврате нужных данных? ...

Я использовал этот код в pre-query trigger

:parameters.whr:=get_block_property('employees',default_where);

Но он не дал результатов

1 Ответ

0 голосов
/ 09 сентября 2018

Ты близко , но не достаточно близко . Вам нужен GET_BLOCK_PROPERTY, но используйте его параметр LAST_QUERY. Он вернет оператор SQL последнего запроса в указанном блоке.

В качестве альтернативы используйте системную переменную :SYSTEM.LAST_QUERY (возвращает тот же результат).

Вот пример (следующий код может быть вставлен в триггер KEY-EXEQRY блока employees):

declare
  l_lastq          varchar2(4000);
  l_where_position number;
  l_where_clause   varchar2(4000);
begin
  execute_query;
  l_lastq := :system.last_query;
  l_where_position := instr(lower(l_lastq), 'where');

  if l_where_position > 0 then
     l_where_clause := substr(l_lastq, l_where_position, length(l_lastq));
     message('WHERE clause: ' || l_where_clause);
  end if;
end;
...