1、存储过程的概念
存储过程是具有以下特征的程序:
(1)用CREATE PROCEDURE语句注册;
(2)包含一个或多个SQL语句和一些用编程语言编写的
操作或逻辑处理;
(3)存储在数据库中且在DB2服务器上运行;
(4)可以由正在使用SQL的应用程序使用CALL语句来调用;
(5)允许应用程序分两部分运行:在客户机上运行应用
程序,在服务器上运行存储过程。
存储过程能够帮助提高应用程序性能并减少数
据库存取流量。
存储过程还可以帮助集中业务逻辑。
2、存储过程的类型
存储过程的类型包括两种:
1.外部存储过程
2.SQL存储过程
3、SQL存储过程的创建与执行
创建存储过程的语法:
CREATE PROCEDURE procedure_name
({[IN|OUT|INOUT] parameter_name datatype} [,…n])
[SPECIFIC specific_name]
[DYNAMIC RESULT SETS [0 | integer]]
[MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA]
[NOT DETERMINISTIC | DETERMINISTIC][CALLED ON NULL INPUT]
[INHERIT SPECIAL REGISTERS]
[OLD SAVEPOINT LEVEL | NEW SAVEPOINT LEVEL]
[LANGUAGE SQL][EXTERNAL ACTION | NO EXTERNAL ACTION]
[PARAMETER CCSID ASCII | UNICODE]
SQL_procedure_body
SQL_procedure_body ::=
[label_name:]BEGIN[ATOMIC | NOT ATOMIC]
[local_variable_declaration][cursor_declaration]
[condition_declaration][handler_declaration]
<SQL_routine_statement | dynamic_compound_statement>
END [label_name]
SQL存储过程的创建与执行
使用CALL语句前需要连接至相应的数据库。要使用CALL语句,输入存储过程名,加上任何IN或INOUT参数,并输入“?”作为每个OUT参数的占位符。
存储过程传递参数的规则:
(1)变量和参数必须严格匹配;
(2)所有的参数都必须有值(包括占位符“?”);
(3)重载存储过程的区分和参数的匹配取决于参数的数目。
应用临时表的存储过程
临时表一般在以下情况下使用:
(1)临时表用于存储程序运行中的临时数据。
(2)临时表可以用于存储在一个程序中需要返回多次的结果集。
(3)临时表也可以用于让SQL访问非关系型数据库。
4、存储过程的重载
DB2支持存储过程的重载,这些存储过程可以有相同的存储过
程名和不同个数的参数,只要给它们指定不同的“特定名称”
即可。
5、存储过程的查询、修改和删除
1. 查询
查询用户存储过程语法格式为:
SELECT * FROM SYSCAT.PROCEDURES
[WHERE PROCSCHEMA=’ SQL存储过程的模式名(必须大写)’
[AND PROCNAME=’ SQL存储过程的名称(必须大写)’]
[AND SPECIFICNAME=’ SQL存储过程的特定名称(必须大写)’]]
2.修改
DB2存储过程一旦创建就不能够修改,只能删除。如果
需要修改存储过程,必须先删除原来的存储过程,然后再
创建新的存储过程。
3. 删除
删除存储过程的语法格式为:
DROP PROCEDURE procedure_name#
或
DROP PROCEDURE procedure_name()#
或
DROP PROCEDURE procedure_name (data_type[,…n])#
或
DROP SPECIFIC PROCEDURE procedure_specific_name #