Предоставить сообщение для ввода данных пользователем в SQL Developer 3.1.07 - PullRequest
0 голосов
/ 03 января 2019

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

SELECT claimdate, assessmentid
FROM claimassessment
WHERE claimdate > to_date('&Date_as_yyyy_mm_dd', 'yyyy-mm-dd');

Я продолжаю читать, что должен использовать ключевые слова ACCEPT и PROMPT, но я использую SQL Developer 3.1.07, и эти ключевые слова не распознаются. Как бы получить всплывающее окно для отображения приглашения типа «Введите дату вступления в силу в формате« гггг-мм-дд ». Подсказка по умолчанию во всплывающем окне просто говорит «Введите переменную замещения»

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Ключевые слова accept и prompt распознаются в SQL Developer 3.1.07.42.

Вот демонстрация с использованием этой формы:

accept Date_as_yyyy_mm_dd date format "YYYY-MM-DD" prompt "Enter the effective date in the format 'yyyy-mm-dd'" 

, которая создает окно приглашения с нужным текстом (двойные кавычки вокруг значения подсказки не нужны в 3.1, но я думаю, что они делают это более понятным; одинарные кавычки не сохраняются в любом случае, хотя в 3.1, но они есть в 18.3), а также проверяет формат предоставленногоценности;и затем использует принятое значение:

enter image description here

При запуске в качестве скрипта (F5) появляется всплывающее окно с указанным текстом:

enter image description here

Если я введу значение, которое не соответствует формату, оно повторно запрашивает:

enter image description here

и он имеет приемлемое значение, он использует это значение переменной подстановки в последующих инструкциях:

enter image description here

И до тех пор, пока вы 'Запустив accept в режиме сценария, вы можете выполнить свой основной запрос как оператор (control-enter), чтобы получить результаты в виде сетки в окне «Результаты запроса».


Как упоминал Джефф, 3.1 очень старый - кажется, он был выпущен в феврале 2012 года - поэтому вы можете рассмотреть возможность получения более новой версии.

enter image description here

0 голосов
/ 03 января 2019

Вариант 1: встроить его в ваше ЗАМЕНА Имя переменной

SELECT *
  FROM hr.employees
 WHERE hire_date > TO_DATE('&date_mm_dd_yyyy', 'MM-DD-YYYY');

enter image description here

Формат даты является своего рода в приглашении - пользователь будетхотя бы знайте, что вам нужен 2-значный месяц, затем 2-значный день, а затем 4-значный год.

Вариант 2. Использование отчета с переменными связывания.

enter image description here

Для отчета вместо переменной подстановки мы используем BIND.Ваш запрос в основном остается тем же, он просто: X против & X.Преимущество заключается в том, что ваш запрос будет кэшироваться в оптимизаторе один раз против нескольких раз, один раз для каждого запроса ... хотя более свежие копии базы данных достаточно умны, чтобы понять это самостоятельно.

Вы можетеопределите в отчете, как помечается приглашение.

enter image description here

И запрос за отчетом

SELECT *
  FROM hr.employees
 WHERE hire_date > to_date(:user_date, 'MM-DD-YYYY')
...