db2存储过程for循环
㈠ db2中循环脚本怎么编写
delete from <table_name> where <data><date_sub(date(now()),interval 12 month);
例
mysql> select * from name where csny>date_sub(date(now()),interval 1 month);
+----+--------+------+------------+
| id | xm | xb | csny |
+----+--------+------+------------+
| 16 | Apri26 | gl | 2012-04-26 |
+----+--------+------+------------+
1 row in set (0.00 sec)
mysql> delete from name where csny>date_sub(date(now()),interval 1 month);
Query OK, 1 row affected (0.14 sec)
mysql> select * from name where csny>date_sub(date(now()),interval 1 month);
Empty set (0.00 sec)
㈡ 如何设置DB2数据库为循环日志
当创建新数据库时,循环日志记录是缺省行为。(将 logarchmeth1 和 logarchmeth2 数据库配置参数设置为 OFF。)对于这种类型的日志记录,只允许完整的脱机数据库备份。进行完全备份时,数据库必须脱机(用户不可访问)。正如它的名称所表示的那样,循环日志记录使用一个联机日志“环”,提供对事务故障和系统崩溃的恢复。仅使用和保留日志到确保当前事务的完整性这样一个程度。循环日志记录不允许将数据库在上次完全备份操作后执行的事务中前滚。上次备份操作后发生的所有更改都将丢失。因为这种类型的复原操作将数据恢复至进行完全备份的特定时间点,所以它称为版本恢复。
㈢ 如何执行db2存储过程
1、db2 create database 数据库名 <-- 创建数据库
2、db2 connect to 数据库名 user 用户名 using 用户密码 <-- 连接数据库
3、db2 -tvf otpdb_v3_db2.sql <-- 为新建数据库建立表结构
4、db2 -td@ -f 存储过程文件绝对路径 <-- 导入存储过程,无错误会提示成功
4、调用存储过程:
Windows 下:db2 call 存储过程名(参数1,参数2)
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>call 存储过程名(参数1,参数2)
5、验证插入数据是否成功
Windows 下:db2 select count(*) from FTOTP_USERINFO
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select count(*) from FTOTP_USERINFO
Windows 下:db2 select count(*) from FTOTP_TOKENINFO
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select count(*) from FTOTP_TOKENINFO
㈣ 小弟接触DB2不久,遇到个DB2函数循环的问题,始终报错,望大神指点迷津
试试这个。
CREATE FUNCTION RRS.F_AVG ( IN cDate date )
RETURNS VARCHAR(26)
LANGUAGE SQL
BEGIN
DECLARE re INTEGER;
DECLARE nYuE INTEGER;
DECLARE nDate INTEGER;
SET RE =0;
SET nDate =TRUNC(cDate,'MM');
WHILE nDate<=cDate
LOOP
select sum(e.DEP_BALANCE/10000*r.EXCHAGERATE_AMT) INTO nYuE from e_deposit e
inner join VIEW_ORG_COLLECT v on v.ORG_ID =e.ORG_ID and v.PRE_ORGID =1
inner join E_EXCHANGE_RATE r on r.CONVERT_CCY_ID =e.V_CCY_ID and r.DATE_ID =to_date(cDate,'yyyymmdd')
where e.DATE_ID =to_date(cDate,'yyyymmdd')
and substr(e.VS_ID,1,4) not in ('2012')
and e.start_date <=to_date(to_char(ndate),'yyyymmdd')
and (e.e_date >to_date(to_char(ndate),'yyyymmdd') or e.e_date is null);
SET RE =RE+nYuE;
SET nDate =nDate+1 day;
END LOOP;
SET re= re/to_number(substr(cDate,7,2));
RETURN (RE);
end
㈤ db2存储过程中循环话语while do的continue有没有
Orcle中的PL/SQL中有以下几种循环 第一种循环就能完成你的需求
1).无条件进入:
loop
exit when 条件;
循环体;
end loop;
2)有条件进入:
while 条件 loop
循环体;
end loop;
3).循环次数固定:
for 循环变量 in [reverse] 下界..上界 loop
循环体;
end loop;
㈥ DB2数据库 写了一个循环插数的存储过程,但是报错,不清楚是为什么,请高手指导。
begin
foriin2..1000
loop
insertintotvalues(i,'x');
endloop;
commit;
end;
㈦ db2存储过程变量问题
创建SQL存储过程(CREATE PROCEDURE (SQL) statement )
CREATE PROCEDURE procere-name(IN | OUT | INOUT parameter-name data-type,...) ) ---存储过程可以设定输入参数和输出参数LANGUAGE SQL ----DB2可以用多种语言编写存储过程,这里用的是纯SQLBEGIN ---开始DECLARE vID smallint; ---定义变量 和Oracle一样 DECLARE 变量名 变量的数据类型;FOR V AS SELECT BRND_CD FROM TMP_BRND_CD ---for循环 tmp_brnd_cd预先创建好DO ---循环体开始SET vID=BRND_CD; ---对vID赋值,db2可以用set赋值,也可以用values赋值,这里可以写成values(BRND_CD) into vIDINSERT INTO WWM_FORINSERT_TEST VALUES(vID); ---往wwm_forinsert_test 插入数据END FOR; --