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

时间:2009-12-04 22:35:09

标签: oracle plsql sqlplus

我有几个脚本,我想从提供给SQLPlus用户的菜单开始。类似于:

请做出选择:
1:做脚本a 2:做脚本b
3:做脚本c

我只需要一个指向正确方向的点,而不是快速回答。

6 个答案:

答案 0 :(得分:18)

这是一个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 case表达式的ELSE部分中的'menu'是该脚本的名称,因此当用户输入无效选项时它会再次运行。

答案 1 :(得分:2)

很难完成您尝试使用SQLPlus和/或PL / SQL的操作。

SQLPlus是Oracle数据库的前端。其主要目的是对Oracle RDBMS执行查询。

PL / SQL是一种操纵Oracle数据的语言。

相反,如果你想要用户交互的东西,我建议你在在这里插入你最喜欢的语言(可能是python,C / C ++,C#,Java)编写一个小脚本/程序用于执行所需SQL查询或PL / SQL程序的Oracle连接。

答案 2 :(得分:2)

您可以从主脚本执行脚本:

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用于引用SQLPlus中的变量variablename,与shell脚本中使用$variablename的方式大致相同。如果未定义variablename,则SQLPlus会提示用户输入值。

您可以提供相对于主脚本的路径 - 该示例依赖于支持脚本位于同一目录中。

答案 3 :(得分:0)

DBMS_OUTPUT可用于在屏幕上打印线条。它看起来像是有GET_LINE的功能,但我从来没有使用它,也不知道它们的工作情况。

您只需要小心您的SQLPlus设置。如果没有正确设置,它可以截断行。

答案 4 :(得分:0)

我有一个真正的语言(根据Pablo的评论)。

你可以在login.sql中有一些东西,当你连接时显示一个列表建议(PRINT或PROMPT SQL * Plus语句)。

你可以有一堆名为1.sql,2.sql等的脚本,如果用户输入@ 1,@ 2等就会运行(只要它们在正确的目录中)。

但实际上SQL * Plus并不适用于此。

答案 5 :(得分:0)

如果脚本完全不相关,我会使用简单的批处理文件或shell脚本。