oracle 接收键盘输入,1.5 接受用户键盘输入

1.5 接受用户键盘输入

问题

你想编写一个提示用户输入内容的脚本。然后让PL/SQL代码根据那些输入的内容生成结果。

解决方案

SQL*Plus提供了一种接受用户输入的功能:使用&符号来标记那些需要从键盘录入的值。例子如下:

oracle 接收键盘输入,1.5 接受用户键盘输入_第1张图片

在SQL*Plus中执行上面的代码块时,你会看到以下提示信息,它会提示你输入一个部门ID。在这个例子中,所使用的部门ID是40。

ca1554dc85b0346d956ed12831d14617.png

原理分析

SQL*Plus使用&符号来标记那些提示在命令行或终端输入的值,之后这些值又会马上被赋给&符号后面的变量。紧挨着&符号的文本内容就是会被赋值的变量,它会在提示符下显示。

紧跟着&符号后面的变量被称为替换变量。 替换变量对SQL*Plus来说意义重大。替换变量对数据库引擎是"不可见的"。其实SQL*Plus会用用户输入的文本内容来替换变量引用。就数据库而言,解决方案中代码所包含的是下面的WHERE子句:

d419a74f6798a037ea67edaa4c860d37.png

如果你想在代码的不同地方引用相同的替换变量,那就需要在***个替换变量前面放两个&符号,这样SQL*Plus才会为你保留这个值以便后续使用。例如,下面代码块会先利用&&variable_name获取键盘输入值,然后利用&variable_name打印结果值:

oracle 接收键盘输入,1.5 接受用户键盘输入_第2张图片

你也可以在匿名代码块的DECLARE部分用替换变量为变量赋值。匿名代码块就是没有保存在数据库中的代码块。它不能按名称调用,如果不保存到脚本的话,也只能执行一次。如果某个变量在代码中不被多次使用的话,在DECLARE中使用替换变量可能就会很有用。例子如下:

oracle 接收键盘输入,1.5 接受用户键盘输入_第3张图片

在这个例子中,替换变量department_id会被赋给变量dept_id_var,其中dept_id_var可以在代码块的任意位置被使用。

在使用替换变量的时候,千万要注意用户输入的值类型。如果这个值是变长字符型(VARCHAR2),那么就必须在替换变量的前后用单引号括起来,否则就会在输入时发生错误。

类似地,如果输入值是数值类型(NUMBER),就不应该使用单引号。请看下面的例子:

oracle 接收键盘输入,1.5 接受用户键盘输入_第4张图片

当然,上面的例子假设EMPLOYEES表里只有一个人匹配输入的last_name。如果有多个人满足指定的名字,我们就得循环遍历查询的行结果来进行输出了。循环遍历的案例请参考2.2节。目前,对于存在多个姓氏相同的雇员这种情况,我们只是简单地输出一条提示消息。

【责任编辑:book TEL:(010)68476606】

点赞 0

你可能感兴趣的:(oracle,接收键盘输入)