Вопрос по plsql, sqlplus, sql – Как сделать меню в SQLPlus или PL / SQL?

2

Я делаю эту программу, которая будет иметь меню, которое получает ввод пользователя и выполняет определенный сценарий на основе его / ее выбора. Что-то вроде:

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

Я посмотрел на эту ссылку:Как сделать SQLPlus или PL / SQL Menu

И я смог извлечь из этого что-то, НО это не полностью функционально. Потому что есть определенные строки, которые я не понимаю. Увидеть ниже.

PROMPT  1: Make a sales invoice 
PROMPT  2: Inquire a sales invoice

accept selection PROMPT "Enter option 1-2: "
set term off
column script new_value v_script  -- What's column script?
select case '&selection.'
       when '1' then '@test.sql'
       when '2' then '@test.sql'
       else '@FinalAssignment.sql'
       end as script  -- What script is this referring to? 
from dual; -- Don't know this

set term on

@&v_script. -- What script is being ran here?

Я могу заставить программу запускать сценарии, НО остальное не работает. Если я выберу число вне этого диапазона, сценарий закроется, вместо того, чтобы перезагрузить себя. Также, когда скрипт запускается, он закрывается, вместо того, чтобы возвращаться в главное меню. Я знаю, что должен выполнить цикл, чтобы решить эту проблему, НО я не знаю, как реализовать это на этом языке.

Любая помощь приветствуется. Спасибо!

docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1007781 для «столбца»; вещь. Это должно все прояснить. Mat
@miguel Мы, конечно, должны спросить об этом сасиприю: P unknownsatan

Ваш Ответ

1   ответ
2

Ans 1. колонкаscript столбец вselect запрос определяетсяas script, что значитscript псевдоним столбца.

Ans 2. as script называется псевдонимом столбцаselect STMT. В этом столбце только одинselect заявление. примерSELECT column AS col1 FROM table;, КолонкаNEW_VALUE получает выбранное значение (которое определяетсяcase stmt, который в данном случае является именем скриптаtest1.sql, test2.sql, или жеFinalAssignment.sql) и сохраняет его вv_script.

Ans 3. dual Таблица - это специальная таблица из одной строки, присутствующая по умолчанию во всех установках базы данных Oracle. Ещеdual Вот, Вы можетеselect что-нибудь изdual, лайкselect sysdate from dual; или жеselect 'ABCDEF' AS col1 from dual;.

Ans 4. v_script столбец будет содержать имя сценария согласно вашему выбору изcase заявление вselect запрос, т. е. из выбора меню (как обсуждалось в ответе 2). Как только это будет выбрано, вы можете захотеть запустить этот выбранный скрипт (не так ли?). Это то что@&v_script делает. Вы запускаете скрипт в SQLPlus, используя@script_name

PROMPT  1: Make a sales invoice 
PROMPT  2: Inquire a sales invoice    
accept selection PROMPT "Enter option 1-2: "

set term off
column script new_value v_script  --Q1. What's column script?
select case '&selection.'          --from accept above
       when '1' then '@test1.sql'  --script to run when chosen option 1.
       when '2' then '@test2.sql'  --script to run when chosen option 2.
       else '@FinalAssignment.sql' --this script
       end as script  --Q2. What script is this referring to? 
from dual; --Q3. Don't know this

set term on

@&v_script. --Q4. What script is being ran here?

Caveats-

FinalAssignment.sql should be the name of the script itself i.e. the script where the above code is.

Line 1,2, and 3 are part of the script. PROMPT is a valid SQL*Plus command and so is ACCEPT.

Похожие вопросы