加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

db2 truncate 限制多多啊

(2012-03-02 14:43:33)
标签:

杂谈

分类: db2

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命令,而且要关闭游标

这个要求实在是太高了

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有