Oracle APEX используйте кнопку для изменения источника отчета sql

На странице отчета моего приложения Oracle APEX источник отчета определяется sql с

SELECT VALUE1, VALUE2, VALUE3 ... FROM TABLE1

Когда пользователь нажимает кнопку, например кнопку «Сортировка», я хотел бы добавить предложения JOIN, WHERE и ORDER BY в источник отчета sql.

Новый источник отчета после события нажатия кнопки должен быть

SELECT VALUE1, VALUE2, VALUE3 ... FROM TABLE1 
JOIN TABLE2 WHERE ID='123' ORDER BY VALUE2 ASC

Как этого добиться?


person Andrew    schedule 22.12.2016    source источник
comment
Зачем нужна отдельная кнопка для фильтрации, сортировки? Этого можно добиться с помощью самого динамического отчета.   -  person learningloop    schedule 22.12.2016
comment
Это часть нашего задания. От нас требуется реализовать отдельную сортировку или фильтрацию, например сортировку сначала по ближайшему расстоянию, что по умолчанию не рассматривается в динамическом отчете.   -  person Andrew    schedule 22.12.2016


Ответы (1)


Если вам нужно только изменить фильтрацию, сортировку, список видимых столбцов и т. Д., Используйте функцию интерактивного отчета. Если вы действительно хотите изменить текст запроса, выберите «PL / SQL Function Returning SQL Query» в качестве типа реализации отчета и создайте некоторый код.

DECLARE
  l_col_list  VARCHAR2(4000);
  l_join      VARCHAR2(4000);
  l_where     VARCHAR2(4000);
BEGIN
  l_col_List := ....;
  l_join := ....;
  l_where := ....;
  RETURN 'SELECT ' || l_col_list || ' FROM ' || l_join || ' WHERE ' || l_where;
END;

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

Пример страницы: apex.oracle.com/pls/apex/f?p = 54028: 5

person hinotf    schedule 22.12.2016
comment
Привет и спасибо за ответ. Как можно изменить исходный sql во время выполнения с помощью динамического действия нажатия кнопки? - person Andrew; 22.12.2016
comment
Вы можете использовать скрытые элементы для хранения значений select_list, join и where. Измените его нажатием кнопки и повторно отправьте страницу. - person hinotf; 22.12.2016
comment
Не могли бы вы подробнее рассказать об использовании скрытых элементов, поскольку я новичок в Apex. Например, по умолчанию, когда страница отчета загружена, она должна отображать все значения, я имею в виду каждую строку данных из таблицы данных. Если пользователь нажимает кнопку настраиваемой сортировки, скажем, сначала «Сортировать по ближайшему расстоянию», то он активирует объединение и где и показывает его в порядке. - person Andrew; 22.12.2016
comment
Создавайте новые элементы на странице с type = hidden. Например, вы можете создать один элемент с именем: Pxx_MY_QUERY. Затем создайте процесс PL / SQL при нажатии кнопки и установите значение элемента с полным текстом запроса. Также измените источник региона на BEGIN RETURN: Pxx_MY_QUERY; КОНЕЦ; Должно сработать. - person hinotf; 22.12.2016