- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DB2存储过程精简教程解析
DB2存储过程基础培训 2009年1月1日 * 内容提要 数据类型 使用存储过程的优点 储存过程的结构 参数定义 变量定义 赋值语句 条件控制语句 循环语句 常用操作符 异常处理 游标使用 动态游标使用 SESSION临时表使用 * 数据类型 定长型字符串(CHAR) 变长型字符串(VARCHAR) 整数类型(SMALLINT、INTEGER、BIGINT) 带小数点的数字类型(DECIMAL、REAL、DOUBLE) 时间类型(DATE、TIME、TIMESTAMP) 对象类型(BLOB、CLOB、DBCLOB) * 使用储存过程优点 减少客户机与服务器之间的网络使用率。客户机应用程序将控制权传送到数据库服务器上的存储过程。存储过程在数据库服务器上执行中间处理,而不需要在网络中传送不需要的数据。 提高安全性。通过使使用静态 SQL 的存储过程包含数据库特权,数据库管理员(DBA)可以提高安全性。调用存储过程的客户机应用程序的用户不需要数据库特权。 提高可靠性。在数据库应用程序环境中,许多任务是重复的。通过重用一个公共过程,存储过程就可以高效地解决这些重复情况。 * 存储过程结构 存储过程结构如下: CREATE PROCEDURE SP_STAFF (IN SAL INT ) DYNAMIC RESULT SETS 1 LANGUAGE SQL READS SQL DATA BEGIN DECLARE cur1 CURSOR WITH RETURN FOR SELECT name, dept, job,salary FROM staff WHERE salary SAL; OPEN cur1; END; * 参数定义1 DB2储存过程的参数分为两部分:输入、输出参数和性能相关参数。 输入、输出参数表示方式: 输入参数用IN开头 输出参数用OUT开头 既是输入又是输出参数用INOUT开头 举例说明: create procedure sp_sample ( in var0 varchar(10), out var1 varchar(20), inout var2 varchar(20)) * 参数定义2 创建存储过程语句(CREATE PROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数 容许 SQL (allowed-SQL) 容许 SQL (allowed-SQL)子句的值指定了存储过程是否会使用 SQL 语句,如果使用,其类型如何。它的可能值如下所示: * 参数定义3 NO SQL: 表示存储过程不能够执行任何 SQL 语句。 CONTAINS SQL: 表示存储过程可以执行 SQL 语句,但不会读取 SQL 数据,也不会修改 SQL 数据。 READS SQL DATA: 表示在存储过程中包含不会修改 SQL 数据的 SQL 语句。也就是说该储存过程只从数据库中读取数据。 MODIFIES SQL DATA: 表示存储过程可以执行任何 SQL 语句。即可以对数据库中的数据进行增加、删除和修改。 如果没有明确声明 allowed-SQL,其默认值是 MODIFIES SQL DATA。不同类型的存储过程执行的效率是不同的,其中 NO SQL 效率最好,MODIFIES SQL DATA 最差。如果存储过程只是读取数据,但是因为没有声明 allowed-SQL 使其被当作对数据进行修改的存储过程来执行,这显然会降低程序的执行效率。因此创建存储过程时,应当明确声明其 allowed-SQL。 * 参数定义4 返回结果集个数(DYNAMIC RESULT SETS n) 存储过程能够返回 0 个或者多个结果集。为了从存储过程中返回结果集,需要执行如下步骤: 在 CREATE PROCEDURE 语句的 DYNAMIC RESULT SETS 子句中声明存储过程将要返回的结果集的数量(number-of-result-sets)。如果这里声明的返回结果集的数量小于存储过程中实际返回的结果集数量,在执行该存储过程的时候,DB2 会返回一个警告。 如下存储过程就会返回警告: * 参数定义5 CREATE PROCEDURE RESULT_SET ( ) DYNAMIC RESULT SETS 1 LANGUAGE SQL READS SQL DATA BEGIN
文档评论(0)