PL/SQL Oracle 10g 要求用户输入(替换变量除外)

PL/SQL Oracle 10g Ask user for input (other than substitution variable)

伪代码:

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;

我遇到了一个问题。当我尝试 运行 它时,它首先要求“&选择”,然后显示 dbms_output.put_line() 语句。

但我想先显示选项,然后再征求用户的意见。

样本输出(我想要的):

 Welcome to Oracle
 1. Insert
 2. Delete
 Choose an option:
 Enter the value for choice:

那么解决这个问题的方法是什么?有没有其他方式从用户那里获取输入?

提前致谢。

PL/SQL 不是交互式的,因此您不能在 PL/SQL.

中执行此操作

使用 & 提示用户输入是 SQL*Plus 命令,而不是 PL/SQL。 PL/SQL在数据库引擎内部执行,无法访问终端windowGUI工具,如SQL开发者

话虽如此,你可以传递参数。

例如,

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>