DB2存储过程
- 存储过程适用场景
当需求只涉及数据转移,如报表跑批,历史数据迁移等。可以考虑使用存储过程实现需求。
- 存储过程注意事项。
- Dbvisualizer 中是无法直接创建存储过程的。因为编译器会把存储过程识别为多条sql来执行,即一个;为一条sql。
- 可以通过改变终止符为@的方式,让编译器不在以;作为sql的结束条件。eg: end@
- 可以在编译器中用--/ PROCEDURE/,的方式创建存储过程。
- 简单的存储过程示例(Dbvisualizer 中创建)
--/
CREATE OR REPLACE PROCEDURE AAS.TEST_PROCEDURE(IN START_DATE VARCHAR(8),IN END_DATE VARCHAR(8)) –创建或者替换存储过程
SPECIFIC TEST_PROCEDURE –-声明
LANGUAGE SQL –声明
BEGIN –开始
DECLARE V_START_TIME TIMESTAMP; --声明(创建)变量
DECLARE V_END_TIME TIMESTAMP;
SET V_START_TIME = TO_DATE(START_DATE,'YYYY-MM-DD');--变量赋值
SET V_END_TIME = TO_DATE(END_DATE,'YYYY-MM-DD');
TIME_LOOP: --自定义循环标示
LOOP --loop 循环
INSERT INTO AAS.TEST VALUES(TO_CHAR(V_START_TIME,'YYYY-MM-DD'));--执行sql
SET V_START_TIME = V_START_TIME + 1 DAYS;
IF(V_START_TIME>V_END_TIME)
THEN LEAVE TIME_LOOP; --退出循环
END IF;
END LOOP TIME_LOOP;
COMMIT; --提交事务
END –结束
/