1.外部存储过程--觉得这个比较好,可以挽救封装的比较好的RPG或者CL程序.效率上也是很显著的,
毕竟是Direct IO
绑定CL的,比较简单,SQLRPG的还没搞定,有知道的人告诉我,因为我已经根据参数设定DS,结果还是不行.
CREATE PROCEDURE EMPLIB.SP_EQCHKLN(
IN CKDATE CHAR(8),
IN CKDEPT CHAR(2),
IN CKUSRNM CHAR(10) )
RESULT SET 0
EXTERNAL NAME EMPLIB.EQCHKLNCL
LANGUAGE CL
PARAMETER STYLE GENERAL
解说:
标准语法CREATE PROCEDURE 库名.存储过程名
参数有 IN OUT INOUT三种类型
参数类型是常规的--可能是DB2默认的,不是太清楚.
指定外部程序名 EMPLIB.EQCHKLNCL--参数3个,也是CKDATE CKDEPT USRNM
指定外部程序使用的语言.:) 简单吧,只需要把CL稍微封装,我们就可以调用服务器的程序.
或者使用CALL 的方式,但是比较麻烦,个人觉得使用这种方式比较好.
2.SQL存储过程-使用参数形式,预编译
CREATE PROCEDURE EMPLIB.SP_GETCHKTX (
IN CKDATE CHAR(8) ,
IN CKDEPT CHAR(2) ,
IN CKUSRNM CHAR(10) )
RESULT SETS 1
LANGUAGE SQL
SPECIFIC EMPLIB.SP_GETCHKTX
READS SQL DATA
BEGIN
DECLARE SQLSTRING VARCHAR ( 200 ) ;
DECLARE C1 CURSOR WITH RETURN FOR S1 ;
SET SQLSTRING = 'SELECT * FROM EMFLIB.EQCHKTXPF WHERE EQCHKDT=? AND EQDEPT=? ' ;
IF TRIM ( CKUSRNM ) <> '' THEN
SET SQLSTRING = SQLSTRING || ' AND EQOPRT=? ' ;
END IF ;
PREPARE S1 FROM SQLSTRING ;
IF TRIM ( CKUSRNM ) <> '' THEN
OPEN C1 USING CKDATE , CKDEPT , CKUSRNM ;
ELSE
OPEN C1 USING CKDATE , CKDEPT ;
END IF ;
END
这是一个标准的存储过程,如果说是SQL语句是固定的化,那么最简单了.
CREATE PROCEDURE GetCusName()
RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
SELECT cusnam FROM customer ORDER BY cusnam;
OPEN c1;
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 过程 存储 两个 参数 比较 语句 使用 程序 如果 可以 |
注册
个人空间
