当前位置: 代码迷 >> DB2 >> REORG 有关问题
  详细解决方案

REORG 有关问题

热度:8495   发布时间:2013-02-26 00:00:00.0
REORG 问题
我在存储过程中用了一个游标来执行如下操作:
DECLARE C1 CURSOR FOR select tabname FROM PUB.BML_TAB_TP_LIST WHERE TABTP IN ('M','D'); 

OPEN C1;
CLOOP:
LOOP
FETCH C1 INTO V_TABNAME;
if sqlcode=100 then leave CLOOP;
end if;
SET V_STMT='ALTER TABLE BML.'||TRIM(V_TABNAME)||' COMPRESS NO';
EXECUTE IMMEDIATE V_STMT;
SET V_TAB='BML.'||TRIM(V_TABNAME);
  REORG TABLE V_TAB;
END LOOP CLOOP;
CLOSE C1;

编译的时候报错:
SQL0104N 在”’||TRIM(V_TABNAME);" 后面找到异常标记“REORG”。预计标记可能包括:“DROP”。SQLSTATE=42601.

请问怎么解决?

------解决方案--------------------------------------------------------
reorg 语句拼成字符串sql_str

call sysproc.admin_cmd(sql_str);


------解决方案--------------------------------------------------------
哦,运行reorg语句会自动提交,提交后游标就关闭了

在定义游标时加上 with hold子句