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

1.5 接受用户键盘输入

问题

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

解决方案

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

1471a31b4ca10e821af37671299b346d.png

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

ca1554dc85b0346d956ed12831d14617.png

原理分析

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

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

d419a74f6798a037ea67edaa4c860d37.png

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

ca0f2ce443022628a367c13688fad85f.png

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

f2563d67bc7e4d2804de1a6be13811df.png

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

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

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

40b1920fd1fac73911450f545919cc80.png

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

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

点赞 0

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值