如何在SQLPlus或PL/SQL中创建菜单?

如何在SQLPlus或PL/SQL中创建菜单?,sql,plsql,sqlplus,Sql,Plsql,Sqlplus,我正在制作这个程序,它将有一个菜单,可以获取用户的输入,并根据用户的选择执行特定的脚本。大致如下: Please make a selection: 1: Do script a 2: Do script b 3: Do script c 我可以让程序运行脚本,但是其他的都不起作用。如果我选择一个超出该范围的数字,脚本将关闭,而不是重新加载自身。此外,当脚本运行时,它会自动关闭,而不是返回主菜单。我知道我必须运行一个循环来解决这个问题,但我不知道如何用这种语言实现它 任何帮助都将不胜感激。 谢谢

我正在制作这个程序,它将有一个菜单,可以获取用户的输入,并根据用户的选择执行特定的脚本。大致如下:

Please make a selection: 1: Do script a 2: Do script b 3: Do script c 我可以让程序运行脚本,但是其他的都不起作用。如果我选择一个超出该范围的数字,脚本将关闭,而不是重新加载自身。此外,当脚本运行时,它会自动关闭,而不是返回主菜单。我知道我必须运行一个循环来解决这个问题,但我不知道如何用这种语言实现它

任何帮助都将不胜感激。
谢谢

Ans 1.
script
select
查询中由
定义为script
的列,这意味着
script
是列别名

Ans 2.
作为脚本
是作为
select
stmt的列别名引用的。此
select
语句中只有一列。示例
从表中选择列作为col1。该列获取所选值(该值由
案例
stmt驱动,在本例中为脚本名
test1.sql
test2.sql
、或
FinalAssignment.sql
)并将其存储到
v_脚本

Ans 3.
dual
表是默认情况下在所有Oracle数据库安装中提供的一个特殊的单行表。有关双
的详细信息
。您可以从
dual
中选择
任何内容,如
从dual中选择sysdate
从dual中选择'ABCDEF'作为col1

Ans 4.根据您在
select
查询中的
case
语句中的选择,即从菜单选择(如Ans 2中所述),
v_script
列将包含脚本名称。一旦选择了它,您可能希望运行所选脚本(不是吗?)。这就是
@&v_script
所做的。使用
@script\u 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?
注意事项-

  • FinalAssignment.sql
    应该是脚本本身的名称,即上面代码所在的脚本

  • 第1、2和3行是脚本的一部分。是有效的SQL*Plus命令,也是有效的


  • 关于“专栏”的事情。米盖尔我们当然应该问问萨西普里亚:P
    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?
    
    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?