网站大量收购闲置独家精品文档,联系QQ:2885784924

数据库系统原理-第九章服务器环境下的SQL详解.ppt

数据库系统原理-第九章服务器环境下的SQL详解.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 4. PSM中select-from-where查询方式 (4)声明和使用游标。下面几点是不同的: 语句中不出现EXEC SQL 局部变量不使用冒号前缀 使用游标的例子将被延迟到下一节学习了PSM循环语句之后 * 5. PSM中的LOOP循环 LOOP 语句列表 END LOOP; 若对LOOP语句设置循环标识,可使用下面的语句中断循环: LEAVE循环标识; 循环中可用游标读取元组,当没有更多元组时,就希望离开这个循环。对于表示没有找到元组的SQLSTATE值( ‘02000’),可以定义一个条件名: DECLARE Not_Found CONDITION FOR SQLSTATE ’02000’; 更一般地,可以用如下语句声明表示任何希望与SQLSTATE值相对应的标识作为条件: DECLARE 名字 CONDITION FOR SQLSTATE 值; * PSM循环示例 本例的PSM过程将电影公司名称s作为输入参数,并且用输出参数mean和variance给出电影公司s拥有的所有电影长度的平均值和方差。 Page * * 6.PSM中的FOR循环 PSM中的FOR循环结构,唯一重要的目的是游标的迭代。 * FOR循环示例 Page * * PSM中的其他循环 PSM中也有while和repeat循环,其含义与C相同。也就是说,可以创建如下形式的循环 WHILE条件DO 语句列表 END WHILE; 或者这种形式的循环: REPEAT 语句列表 UNTIL条件 END REPEAT; * 7. PSM的异常处理 SQL系统通过在长为5个字符的字符串SQLSTATE变量中设置非零数字序列来表明错误条件。例如: ‘02000’表示“没有找到元组” ‘21000’表示单元组选择返回了多个元组 PSM可以声明称为异常处理的代码。即在语句或语句组执行过程中,当错误代码列表中的任何一个出现在SQLSTATE中时,就调用异常处理。 * 异常处理的组成 每一个异常处理都和一个由BEGIN…END描述的代码块有关。处理过程出现在代码块中,并且仅仅针对代码块中的语句。 异常处理的组成 一组异常条件:当这些条件成立时调用异常处理 当异常发生时,与该异常相关联的执行代码 指明处理器完成处理后的转移去处。 * 异常处理声明的形式 DECLARE 转移方式 HANDLER FOR 条件列表 语句 转移方式有3种选择: CONTINUE:表示执行异常处理声明中的语句之后,继续执行产生异常的语句之后的那条语句。 EXIT:表示执行异常处理语句后,控制离开声明异常处理的BEGIN…END块,下一步执行该代码块之后的语句 UNDO:与EXIT差不多,区别在于到目前为止,已执行的该块语句对数据库或局部变量产生的变化都被撤消 条件列表由逗号分隔的条件的列表,可以是被声明的条件,也可以是SQLSTATE和5位字符串的表达式。 * 异常示例 编写一个PSM函数,以电影片名作为参数,返回电影的年份。如果该片名的电影不存在或是不止一个的 话,则返回NULL。 如果有多条语句,则放在BEGIN…END之间 * 8. 使用PSM函数和过程 在嵌套的SQL程序、PSM代码或提供给基本界面的普通SQL命令中都可调用PSM函数和过程 用保留字CALL作为前缀来调用过程 函数作为表达式的一部分出现 * 使用PSM函数和过程的示例 假定模式中包括了具有GetYear函数的模块。想象面对基本界面,准备输入Denzel Washington是Remember the Titans中的影星这个事实。但却忘记了电影年份。 只要这个名称的电影只有一部,并且它在关系Movies中,那么就不必通过预先查询去找出该年份。而且,可以将下面的语句插入到基本SQL界面中: Page * 练习 P.241/9.4.1/a) Create Function presNetWorth (studioName Char(15)) Returns Integer Declare presNetWorth Int; Begin Select netWorth Into presNetWorth From Studio, MovieExec W

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档