一、存储过程
1、造测试数据
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=100000 DO
INSERT INTO T_FORM (XXX,XYZ)
SELECT cast(cast(XXX as BIGINT) + 1 as varchar(64)),cast(cast(XYZ as BIGINT) + 1 as varchar(32)) FROM T_FORM ORDER BY id DESC fetch first 1 rows only;
SET i = i+1;
END WHILE;
END
二、关于db2锁表处理
db2 表字段操作
–新增字段
alter table Student add T56 DECIMAL(12,2) ;
–删除字段
alter table Student drop column T56 ;
在对表增加或删除字段后,可能会报如下错误
[Code: -668, SQL State: 57016] Operation not allowed for reason code "7" on table "XXX".. SQLCODE=-668, SQLSTATE=57016, DRIVER=4.22.29
解决办法
-- db2命令行操作:执行命令:reorg table XXX;
-- REORG TABLE LAWAGERESULT;
-- 锁表需要运行的(db2客户端出现报错这个问题,我用的下面这种)
CALL SYSPROC.ADMIN_CMD('REORG TABLE LAWAGERESULT')
建议在每次使用完alter操作后都执行一次reorg,出现此类错误时,需要重新装载数据库表。
三、问题总结:
1、将A表数据拷贝到B表时,报错
SQL 错误 [22001]: Value "110105000403x" is too long.. SQLCODE=-433, SQLSTATE=22001, DRIVER=4.16.53
Value "110105000403x" is too long.. SQLCODE=-433, SQLSTATE=22001, DRIVER=4.16.53
Value "110105000403x" is too long.. SQLCODE=-433, SQLSTATE=22001, DRIVER=4.16.53
可以直接复制这个value内容,在A表中查找到后,修正即可。