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; --