Как создать меню в SQLPlus или PL / SQL - PullRequest
3 голосов
/ 05 декабря 2009

У меня есть несколько сценариев, которые я хотел бы запустить из меню, представленного пользователю SQLPlus. Что-то вроде:

Пожалуйста, сделайте выбор:
1: Сценарий
2: Выполните сценарий b
3: Выполнить сценарий c

Мне просто нужна точка в правильном направлении, а не быстрый ответ.

Ответы [ 6 ]

18 голосов
/ 05 декабря 2009

Вот скрипт SQL Plus для этого:

prompt Please make a selection:
prompt 1: Do script a
prompt 2: Do script b
prompt 3: Do script c

accept selection prompt "Enter option 1-3: "

set term off

column script new_value v_script

select case '&selection.'
       when '1' then 'script_a'
       when '2' then 'script_b'
       when '3' then 'script_c'
       else 'menu'
       end as script
from dual;

set term on

@&v_script.

NB. 'Меню' в части ELSE выражения case - это имя этого сценария, поэтому он запускается снова, когда пользователь вводит недопустимую опцию.

2 голосов
/ 05 декабря 2009

Вы можете выполнять сценарии из основного сценария:

CASE LOWER(&v_script_selection)
  WHEN 'a' THEN
    @script_a.sql
  WHEN 'b' THEN
    @script_b.sql
  WHEN 'c' THEN
    @script_c.sql
  ELSE
    DBMS_OUTPUT('No such option available')
END

&variablename используется для ссылки на переменную variablename в SQLPlus, почти так же, как $variablename используется в сценариях оболочки. Если variablename не определено, SQLPlus запрашивает у пользователя значение.

Вы можете указать путь относительно основного сценария - в этом примере вспомогательные сценарии находятся в одном каталоге.

2 голосов
/ 05 декабря 2009

Трудно выполнить то, что вы пытаетесь сделать с помощью SQLPlus и / или PL / SQL.

SQLPlus - это интерфейс для баз данных Oracle. Его основное назначение - выполнение запросов к СУБД Oracle.

PL / SQL - это язык для управления данными в Oracle.

Вместо этого, если вы хотите что-то с взаимодействием с пользователем, я бы предложил вам написать небольшой скрипт / программу на и вставить ваш любимый язык сюда (может Python, C / C ++, C #, Java) с Соединение с Oracle для выполнения необходимых SQL-запросов или программ PL / SQL.

0 голосов
/ 05 декабря 2009

Если сценарии совершенно не связаны, я бы использовал простой командный файл или сценарий оболочки.

0 голосов
/ 05 декабря 2009

Я получил реальный язык для этого (согласно комментарию Пабло).

В файле login.sql могут быть некоторые элементы, которые отображают список предложений при подключении (операторы PRINT или PROMPT SQL * Plus).

И у вас может быть набор сценариев с именами 1.sql, 2.sql и т. Д., Которые будут запускаться, если пользователь введет @ 1, @ 2 и т. Д. (Если они находятся в правильном каталоге).

Но на самом деле SQL * Plus не подходит для этого.

0 голосов
/ 05 декабря 2009

DBMS_OUTPUT может использоваться для печати строк на экране. Похоже, у него есть функции, которые также выполняют GET_LINE, но я никогда не использовал его и не знаю, насколько хорошо они работают.

Вам просто нужно быть осторожным с настройками SQLPlus. Он может обрезать строки, если вы не настроите его правильно.

...