《SQL 21日自学通(V3.0)(PDF格式)》第130章


条件 和指针的内容的变化而变化 PL/SQL 使用标准的过程语言来对语句进行控制 IF 
THEN 和 LOOP 可以让你按指定的条件搜索 你也可以使用 LOOP 来对指定的指针的内容 
进行翻阅 
在任何程序中都会有各种错误产生 PL/SQL 通过异常可以让你对产生错误后的行为 
进行控制 许多异常是预定义过的 如被零除错误 异常可以在程序运行时根据指定的条 
件激活并按程序员所定义的方式进行处理 
在今天也介绍一些对 PL/SQL 的实际应用 数据库对象如触发机制 存储过程 包可 
以自动完成许多功能 在今天的例子中我们也应用了一些在前一天中所提到的概念 
408 
…………………………………………………………Page 409……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
问与答 
问 在第 18 天中我是否已经学习了我需要对 PL/SQL 所掌握的所有内容 
答 当然不是 像今天的介绍只是提及到了一些表层的一些与 SQL 相关的东西 我们 
只是提及了一些 SQL 的非常明显的特性使你对 PL/SQL 有一个基本的了解 
问 我不用 PL/SQL 行不行 
答 当然 你不使用它也是可以的 但是如果你不使用它你会为达到相同的目的而不 
得不在第三代编程语言中使用更多的时间和代码 如果你没有使用 ORACLE 那 
么请检查你的解释器以找到与 PL/SQL 类似的过程方法 
校练场 
1 如何在数据库中使用触发机制 
2 是否可以将相关的过程存储在一起 
3 可以在 PL/SQL 中使用数据操作语言 对不对 
4 可以在 PL/SQL 中使用数据定义语言 对不对 
5 在 PL/SQL 的语法中是否支持直接的文本输出 
6 给出 PL/SQL 语句块的三个主要部分 
7 请给出与指针控制相关的命令 
练习 
1 请定义一个变量 使它可以接受的最大数值为 99。99 
2 请定义一个指针 它的内容包括 CUSTOMER_TABLE 表中的所有 CITY 为 
INDIANAPOLIS 的客户 
3 定义一个名字为 UnknownCode 的异常 
4 请写一个语句 使得在 AMOUNT_TABLE 中的AMT 当 CODE 为 A 时其值为 10 
当 CODE 为 B 时其值为 20 当 CODE 既不是 A 也不是 B 时激活一个名字叫 
UnknownCode 的异常 表中的内容只有一行 
409 
…………………………………………………………Page 410……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
第 19 天 TRANSACT…SQL 简介 
目标 
与 TRANSACT…SQL 是对标准 SQL 的补充一样 今天的内容是对前几天内容的补充 
今天的目标是 
l 知道一种对 SQL 的流行的扩展 
l 知道 TRANSACT…SQL 的主要特性 
l 给出一些特殊的例子让你知道如何去使用 TRANSACT…SQL 
TRANSACT…SQL 概貌 
在第 13 天的 高级 SQL 中我们简要地提到过静态 SQL 在第 13 天的例子中我们也 
描述了如何在第三代编程语言如 C 中写内嵌的 SQL 语句的方法 由于采用这种方法时嵌 
入的 SQL 语句是无法改变的所以它的灵活性就受到了限制 而如果我们采用动态的 SQL 
语言编程来完成相同的工作时 就允许 SQL 代码的条件在运行时改变 
在本书中我们其实已经讨论过了相关的每一个主题 几乎每一个数据库供应商都在它 
的语言进行了相应的扩展 TRANSACT…SQL 是 SYBASE 和 MICROSOFT SQL SERVER 的 
产品 而 ORACLE 的产品是 PL/SQL 这里的每一种语言可以完成全部的到目前为止我们 
所讨论的每一件事 此外 每一种产品都对标准的 SQL 进行了相应的扩展 
对 ANSI SQL 的扩展 
为了演示使用这些扩展来创建实际的程序 我们使用了 SYBASE 和 MICROSOFT SQL 
SERVER 的 TRANSACT…SQL 它具有大多数的在第三代编程语言中具有的结构 对于针 
对 SQL…SERVER 的特性它也提供了许多便利的工具用以进行数据库编程 在其它的数据库 
供应商中也提供了与之类似和更多的特性 
410 
…………………………………………………………Page 411……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
谁需要使用 TRANSACT…SQL 
任何一个读过本书的人都会使用 TRANSACT…SQL 如果是一个程序员它偶尔会用它 
来写一个查询 如果是开发员则可以用它写应用程序以创建对象如触发机制和存贮过程等 
注 SYBASE 和 MICROSOFT SQL SERVER 的用户如果想开发实际上的关系数据库应用程 
序就必须使用 TRANSACZT…SQL 的特性 
TRANSACT…SQL 的基本组件 
对 SQL 的扩展已经超过了 SQL 作为一种过程型语言的限制 例如 TRANSACT…SQL 
可以让你对数据库的事务进行紧密的控制并且可以写出数据库过程程序以把编程人员从冗 
重的代码中解放出来 
l 在第 19 天我们主要会提到 TRANSACT…SQL 的以下主要特性 
l 提供了更大范围的数据类型以优化数据的存贮 
l 程序流控制命令如 IF…THEN 和 LOOP 语句 
l 在 SQL 语句中使用变量 
l 使用 PUTATION 生成摘要报告 
l 对 SQL 语句的诊断和分析特性 
l 对标准的 SQL 语句提供了许多其它的选项 
数据类型 
在第 9 天的 创建和操作表 中我们讨论过数据类型 当使用 SQL 创建表时 我们必 
须为每一列指定数据类型 
注 在不同的 SQL 解释器中数据的类型是不同的 因为每一种数据库服务存储数据的方法 
都是各不相同的 举例来说 ORACLE 有它自己选定的数据类型 而 SYBASE 和 
MICROSOFT SQL SERVER 则有他们自己的数据类型 
SYBASE 和 MICROSOFT SQL SERVER 支持下列数据类型 
411 
…………………………………………………………Page 412……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
字符串 
char 用以存储长度固定的字符串 例如 STATE 的缩写— — 你知道这一列只有两个字符 
Varchar 用以存储长度可变的字符串 如人名 它是无法对其长度进行预先指定的 例 
如 AL RAY 与 WILLIAM STEPHENSON 
Text 存贮的字符长度几乎是不受限制的例如一种服务的备注和描述字段 
数字类型 
int 存储的整型数值范围为…2;147;483;647 到+2;147;483;647 
Smallint 存储的整型数值的范围为…32;768 到 32;767 
Tinyint 存储的整型数值的范围为 0 到 255 
Float 可以存储有精度要求的浮点数 数值范围为+2。23E…308 和+1。79E308 
Real 可以存储的数据的精度为 1。18E…38 to +3。40E38 
日期类型 
小说推荐
返回首页返回目录