首页 > 代码库 > 存储过程语法
存储过程语法
DB2中存储过程包括存储过程头和存储过程体
存储过程头
create procedure sum(in p_a integer,
in p_b integer,
out p_s integer)
language sql
specific sum_ab
begin
set p_s = p_a + p_b;
end
a、名称:模式加名称,如:db2admin.reademp
b、参数:1 模式:in/out/inout
2 名称:建议以P_开头
3 数据类型
c、调用存储过程,如:call sun(100,200,?)
d、删除存储过程 drop procedure sum(integer,integer,integer)
e、dynamic result sets指定了返回的最大结果集数目(后面跟数字)
f、contains sql (不含查询和更新语句)
reads sql data:只含查询语句
modifies sql data:含查询和更新,限制最少
精确定义以上3项,可提高存储过程执行性能
g、deterministic:对于相同的输入参数,每次返回的结果都是相同的,结果集 放在内存中可以重用,因此可以提高运行性能;
not deterministic:缺省,不推荐
h、language sql/c/java 分别对应相应语言存储过程
i、called on null input:当输入参数为空值,过程依旧执行,缺省值
j、P昂然meter CCSID:Coded Character Set ID,定义了当字符类的数据传入 和过程中输出的编码模式
存储过程体:
1、declare 变量名 数据类型
2、流程控制
- CASE 根据对一个或多个条件的计算选择执行路径
- FOR 对于表中的每一行执行一个代码块
- GET DIAGNOSTICS 将关于前一个SQL语句的信息返回到一个SQL变量中
- GOTO 控制转移到一个有标签的块(一个或者多个语句的块,由一个唯一的 SQL名称和冒号标识)
- IF 语句(ELSEIF、ELSE)
- ITERATE将流程控制传递到一个有标签的循环的开头
- LEAVE 使程序控制离开一个循环代码块
- LOOP 多次执行一个代码块,直到LEAVE,ITERATE或者GOTO语句控制离开
- REPEAT 重复执行一个代码块,直到指定的搜索条件返回真为止
- RETURN 控制从SQL过程返回给调用者
- SET 将一个值赋值给一个输出变量或者SQL变量
- WHILE 在指定条件为真时重复执行一个代码块
创建:db2 -td@ -vf createSQLproc.db2
调用:db2 call 过程名(参数)
...
end@ (此处的@可替换成其他符号)
存储过程语法