Создание панели поиска вручную БЕЗ интерактивного отчета.(Oracle APEX) - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь сделать приложение полностью вручную без использования каких-либо интерактивных отчетов или сгенерированного PL / SQL.На данный момент все работает, но я в тупике, когда дело доходит до панели поиска, и я не могу найти в Интернете ничего, что могло бы мне помочь.

У меня есть классический отчет под названием «Поиск вакансий» и кнопка «Поиск»;У меня также есть панель поиска 'C1_JOB_TITLE_ITEM' и процесс страницы под названием 'Поиск'.

В процессе у меня есть этот код:

SELECT 
    JOB_CODE, 
    JOB_TITLE, 
    JOB_DESCRIPTION, 
    SITE_NAME, 
    EMAIL_ADDRESS, 
    TELEPHONE_NUMBER, 
    SALARY, 
    START_OF_PLACEMENT, 
    APPLICATION_METHOD, 
    APPLICATION_CLOSING_DATE
FROM JOB
WHERE upper(job_title) = upper(:C1_JOB_TITLE_ITEM);

Я получаю эту ошибку:

ORA-06550: строка 1, столбец 64: PLS-00428: в этом операторе SELECT ожидается предложение INTO

Итак, я создал этот код:

DECLARE temp_row char;
BEGIN
    SELECT 
        JOB_CODE, 
        JOB_TITLE, 
        JOB_DESCRIPTION, 
        SITE_NAME, 
        EMAIL_ADDRESS, 
        TELEPHONE_NUMBER, 
        SALARY, 
        START_OF_PLACEMENT, 
        APPLICATION_METHOD, 
        APPLICATION_CLOSING_DATE
    INTO temp_row
    FROM JOB
    WHERE job_title = :C1_JOB_TITLE_ITEM;
END;

Здесь я получаю эту ошибку:

ORA-06550: строка 13, столбец 16: PL / SQL: ORA-00947: недостаточно значений

IЯ полностью озадачен тем, что делать в этот момент, поэтому любая помощь очень ценится.Извините, если я недостаточно подробен, я впервые пишу в переполнении стека.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

(редактирование, потому что кто-то не думал, что это ответ.)

Вы говорите, что у вас есть процесс страницы.Вам не нужен какой-либо процесс для этого.У вас должен быть регион со следующими свойствами (при условии 18x):

  1. Тип = Классический отчет
  2. Источник> Местоположение = Локальная база данных
  3. Источник> Тип= SQL-запрос
  4. Источник> SQL-запрос> ваш запрос из вашего первого блока выше

Apex выполнит запрос и создаст на его основе отчет.Процессы предназначены для блоков PL / SQL, которые выполняют что-то вроде заполнения данных или манипулирования базой данных.

Когда вы вводите ключевое слово в свой элемент и нажимаете кнопку (действие кнопки должно быть «Отправить страницу»), Apex заполняет C1_JOB_TITLE_ITEM в состоянии сеанса значением пользователя, а затем использует его в переменной bind, когдаон заново генерирует страницу.

0 голосов
/ 10 декабря 2018

1) Создайте классический отчет с этим SQL-кодом в качестве исходного кода.

2) Установите C1_JOB_TITLE_ITEM в атрибутах элементов страницы для отправки , только под источником региона.

3) Создайте элемент страницы C1_JOB_TITLE_ITEM в качестве поля поиска.

4) Создайте динамическое действие при изменении этого элемента и обновите область классического отчета.Время этого обновления зависит от вас.Шаг 2 гарантирует, что значение, введенное вами в браузере, будет отправлено в базу данных для повторного выполнения этого запроса.

Есть ли у вас индекс на основе функций для верхнего (job_title)?В противном случае могут возникнуть проблемы с производительностью.

...