db2 truncate 限制多多啊
在储存过程中用truncate 总是报错,测试如下
--储存过程如下
CREATE OR REPLACE PROCEDURE
CRB_TEST
()
LANGUAGE SQL
BEGIN
declare
v_notfound
integer default 0; --
declare
v_tname
varchar(50);--
declare
v_delete_col
varchar(30); --
declare
v_delete_period integer;--
declare
sqlStr
varchar(300);--
declare
n_is_partition integer;--
declare
fetchSeqCursor cursor for
select tname,delete_col,delete_period,IS_PARTITION from
tsy_delete_manage order by tname;--
declare CONTINUE handler for
NOT FOUND set v_notfound = 100; --
set v_notfound = 0;--
open
fetchSeqCursor;--
fetch
fetchSeqCursor into v_tname,
v_delete_col,v_delete_period,n_is_partition;--
WHILE v_notfound=0 DO
set
sqlStr='truncate table
'||v_tname||'_'||to_char(current_date-90
days,'mm')||to_char(current_date-90 days,'dd')||'
IMMEDIATE';--
execute
immediate sqlStr ;--
set v_notfound = 0;--
fetch
fetchSeqCursor into v_tname,
v_delete_col,v_delete_period,n_is_partition;--
end
WHILE;--
close
fetchSeqCursor;--
END
call crb_test
SQL0428N 只允许将该 SQL
语句作为工作单元的第一条语句。 SQLSTATE=25001
......................................................
.........................................................
在处理 SQL 语句之前,发出 COMMIT 或 ROLLBACK。如果有任何 WITH HOLD 游标
,那么将需要将其关闭。如果语句是 SET INTEGRITY,那么除去 COMMIT
THRESHOLD 子句。
根据错误的提示信息来看,truncate 命令之前,需要发出commit命令,而且要关闭游标
这个要求实在是太高了
加载中,请稍候......