PL/SQL Oracle 10g 询问用户输入(替代变量除外)
Posted
技术标签:
【中文标题】PL/SQL Oracle 10g 询问用户输入(替代变量除外)【英文标题】:PL/SQL Oracle 10g Ask user for input (other than substitution variable) 【发布时间】:2015-03-23 09:19:03 【问题描述】:伪代码:
declare
n number(10);
begin
dbms_output.put_line('Welcome to Oracle');
dbms_output.put_line('1. Insert');
dbms_output.put_line('2. Delete');
dbms_output.put_line('Choose an option');
n:=&choice;
if(n=1)
.....
.....
else
....
....
end if;
end;
我在这里遇到了问题。当我尝试运行它时,它首先会询问“&choice”,然后它会显示 dbms_output.put_line() 语句。
但我想先显示选择,然后询问用户的输入。
示例输出(我想要的):
Welcome to Oracle
1. Insert
2. Delete
Choose an option:
Enter the value for choice:
那么解决这个问题的方法是什么?有没有其他方法可以接受用户的输入?
提前致谢。
【问题讨论】:
你不能在 PL/SQL 中这样做,因为它不是交互式的。 【参考方案1】:PL/SQL 不是交互式的,所以你不能在 PL/SQL 中这样做。
使用&
提示用户输入是SQL*Plus
命令,而不是PL/SQL
。 PL/SQL在数据库引擎内部执行,无法访问终端窗口或SQL Developer等GUI工具。
话虽如此,你可以传递参数。
例如,
SQL> SET serveroutput ON
SQL> DECLARE
2 prompt_input NUMBER;
3 BEGIN
4 dbms_output.put_line('Welcome to Oracle');
5 dbms_output.put_line('1. Insert');
6 dbms_output.put_line('2. Delete');
7 dbms_output.put_line('Choose an option');
8 prompt_input := '&1';
9 IF prompt_input = 1
10 THEN
11 dbms_output.put_line('You have selected '||prompt_input||' .Insert');
12 ELSE
13 dbms_output.put_line('You have selected '||prompt_input||' . Delete');
14 END IF;
15 END;
16 /
Enter value for 1: 1
old 8: prompt_input := '&1';
new 8: prompt_input := '1';
Welcome to Oracle
1. Insert
2. Delete
Choose an option
You have selected 1 .Insert
PL/SQL procedure successfully completed.
SQL>
【讨论】:
同意。如果 OP 有解决方案需要这种交互性,PL/SQL 肯定不是问题的解决方案。 @mmmmmpie,是的,OP 需要为用户提供一个接口来输入数据,就像任何其他应用程序一样。以上是关于PL/SQL Oracle 10g 询问用户输入(替代变量除外)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 java 中使用 jdbc 为 oracle 10g 执行 log miner PL/SQL 查询
如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用? [复制]