Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5143713
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: Oracle

2009-09-07 22:35:09

1.2 SQL*Plus 中的PL/SQL(1)

试验目标

在完成这个试验之后,你能够:

使用替代变量(substitution varible)。

使用DBMS_OUTPUT.PUT_LINE 语句。

SQL *Plus 是一个交互式工具,能够在命令行提示符环境下输入SQL 或者PL/SQL 语句。接着,这些语句会被发送到数据库。在数据库处理这些语句之后,处理结果会从数据库返回,并显示在屏幕上。但是,输入SQL 语句和PL/SQL 语句之间存在一些差别。

考虑SQL 语句的如下范例:

 
SELECT 语句的结尾处是分号。因此,在输入分号,并按下回车键之后,结果集就会显示出来。现在,考虑前面试验中所使用的PL/SQL 语句块:
 


上述语句块的结尾两行代码分别是点号(.)和斜线(/)。点号(.)表示PL/SQL 语句块的结尾,并且是可选的。斜线(/)会执行这个PL/SQL 语句块,并且是必需的。

当SQL *Plus 读取一条SQL 语句时,它知道分号表示语句的结束。因此,分号之前的字符表示一条语句,并被发送到数据库。当SQL *Plus 读取一个PL/SQL 语句块时,分号表示语句块中单个语句的结束。换句话说,它不是语句块结束符。因此,SQL *Plus 需要知道何时语句块结束。正如所看到的那样,可以使用点号和斜线来表示。

1. 替代变量

前面已经提到,PL/SQL 并不是独立的编程语言,只是Oracle 编程环境的一个工具。因此,它不具备从用户接收输入的能力。但是,在SQL *Plus 中,借助于替代变量,PL/SQL 语句块可以接收输入信息。替代变量不能用于输出值,因为没有给它们分配任何存储空间。在PL/SQL 语句块发送到数据库之前,SQL *Plus 会使用实际值来替换这些替代变量。通常而言,替代变量的前缀是& 或者&& 。考虑下面的范例:

 

当执行这个范例时,会要求用户提供学生ID 。如果所提供的学生ID 在STUDENT 数据库表中存在,则检索相应的学生姓名。如果所提供的学生ID 在STUDENT 数据库表中不存在,则异常处理部分会在屏幕上显示一条错误消息。

前面的范例使用& 作为替代变量。当PL/SQL 语句块使用& 时,会要求用户为替代变量的每次出现提供值。考虑下面的范例:

 
这个范例会产生如下输出: 注意,在前面的范例中,替代变量sv_day 出现了2 次。因此,当运行这个程序时,会2 次要求用户提供相同变量的值。现在,可以考虑这个范例的改进版本(所修改部分使用粗体显示):
 
 
阅读(992) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~