您的位置:首页 > 其它

DB2 存储过程,循环插入数据(用户自测造大量数据)

2018-03-01 19:31 465 查看
表结构如下CREATE TABLE
FUND_DAILY_INCOME
(
ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,
ACCOUNT_NO VARCHAR(32),
CREATED_TIME TIMESTAMP,
FUND_CODE VARCHAR(8),
SHARE_HOLDING VARCHAR(15),
INCOME_DATE VARCHAR(10),
INCOME_AMOUNT BIGINT,
MERGE_FLAG VARCHAR(1),
OFFSET_FLAG VARCHAR(1),
UPDATE_TIME TIMESTAMP,
COMPANY_CODE VARCHAR(16),
ALL_INCOME DECIMAL(19,0) DEFAULT 0,
HOLDING_INCOME DECIMAL(19,0) DEFAULT 0,
PLAT_ID BIGINT DEFAULT 10000,
SERVICE_TYPE VARCHAR(2) DEFAULT '01',
SERVICE_CODE VARCHAR(32) DEFAULT '10000',
PRIMARY KEY (ID)
);

循环插入数据的临时存储过程 --/

BEGIN
DECLARE v_date date ;
DECLARE v_date_str varchar(20) ;
DECLARE str varchar(20) ;
DECLARE i INTEGER ;
DECLARE val INTEGER ;
declare sqlStr varchar(1000);

set v_date = to_date( '2014-01-01' ,'yyyy-mm-dd');
set v_date_str = to_char( v_date ,'yyyy-mm-dd') ;
REPEAT

set i = 1 ;
REPEAT

SET sqlStr =' INSERT INTO FUND_DAILY_INCOME ( ACCOUNT_NO, CREATED_TIME, FUND_CODE, SHARE_HOLDING, INCOME_DATE, INCOME_AMOUNT, MERGE_FLAG, OFFSET_FLAG, UPDATE_TIME, COMPANY_CODE ) VALUES '
|| ' ( ''1'', current timestamp , ''1'', ''1'', '''|| v_date_str ||''' , 0, ''1'', ''1'', current timestamp , ''1'' ) ' ;
EXECUTE IMMEDIATE sqlStr;
set i = i +1 ;
UNTIL ( i > 101)
END REPEAT;
set v_date = v_date +1 day ;
set v_date_str = to_char( v_date ,'yyyy-mm-dd') ;
set str = to_char( v_date ,'yyyymmdd') ;
set val = integer(str) ;
UNTIL ( val > 20150101)
END REPEAT;
END
/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: