DB2修改存储过程 (达到表结构的修改,和表的REORG)

狂奔小蜗牛 2012-12-06 01:01:45
需求就是在修改表结构之后
把REORG TABLE 加在存储过程里边 (达到表的解锁。) 一个存储过程完成


create or replace procedure ac(schema varchar(300),tabNM varchar(300),columnname varchar(200),type varchar(200),dataLength int,out err int)
language sql
begin atomic
declare v_sql varchar(200);
declare undo handler for sqlexception set err = 1;
if(dataLength=0) then
set v_sql = 'alter table '|| schema||'.'||tabNM||' alter column '||columnname||' set data type '||type;
else
set v_sql = 'alter table '|| schema||'.'||tabNM||' alter column '||columnname||' set data type '||type|| '('||dataLength||')';
end if;
prepare s1 from v_sql;
execute s1;
set err = 0;
end
...全文
785 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
悲催的程序猿 2012-12-12
  • 打赏
  • 举报
回复
狂奔小蜗牛 2012-12-07
  • 打赏
  • 举报
回复
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 16 楼 wwwwb 的回复:
引用 15 楼 gongzhe2011 的回复:
引用 12 楼 wwwwb 的回复:SP之类的不用想了,只有在脚本中才能reorg

大神给改改,感激啊。。。。
在SP不行,如果只是REORG TABLE administrator.t
写在脚本中用WINDOWS的计划任务调用


我用的是服务端自带的那个编辑器。直接执行的。
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 17 楼 mysdzlt2007 的回复:
9.7的话,除了脚本应该还可以用SYSPROC.ADMIN_CMD(),试试这个
都试过了,在外边是可以的。放进去就不行了。
mysdzlt2007 2012-12-06
  • 打赏
  • 举报
回复
9.7的话,除了脚本应该还可以用SYSPROC.ADMIN_CMD(),试试这个
wwwwb 2012-12-06
  • 打赏
  • 举报
回复
引用 15 楼 gongzhe2011 的回复:
引用 12 楼 wwwwb 的回复:SP之类的不用想了,只有在脚本中才能reorg 大神给改改,感激啊。。。。
在SP不行,如果只是REORG TABLE administrator.t 写在脚本中用WINDOWS的计划任务调用
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 12 楼 wwwwb 的回复:
SP之类的不用想了,只有在脚本中才能reorg
大神给改改,感激啊。。。。
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 13 楼 mysdzlt2007 的回复:
DB2是哪个版本的
9.7
mysdzlt2007 2012-12-06
  • 打赏
  • 举报
回复
DB2是哪个版本的
wwwwb 2012-12-06
  • 打赏
  • 举报
回复
SP之类的不用想了,只有在脚本中才能reorg
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
求结果。。。。。。。
mysdzlt2007 2012-12-06
  • 打赏
  • 举报
回复
嗯,就像WWWWA大神说的,用脚本吧
WWWWA 2012-12-06
  • 打赏
  • 举报
回复
2楼已经给出了思路
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 7 楼 mysdzlt2007 的回复:
reorg不能在存储过程中直接用。
那怎样做呢?
mysdzlt2007 2012-12-06
  • 打赏
  • 举报
回复
reorg不能在存储过程中直接用。
wwwwb 2012-12-06
  • 打赏
  • 举报
回复
从官方的prepare说明上看,不支持REORG的动态执行 Rules for statement strings: The value of the specified statement-name is called the statement string. The statement string must be one of the following SQL statements: ALLOCATE CURSOR ALTER ASSOCIATE LOCATORS COMMENT COMMIT CREATE DECLARE GLOBAL TEMPORARY TABLE DELETE DROP EXPLAIN FREE LOCATOR GRANT HOLD LOCATOR INSERT LABEL LOCK TABLE MERGE REFRESH TABLE RELEASE SAVEPOINT RENAME REVOKE ROLLBACK SAVEPOINT select-statement SET CURRENT DEGREE SET CURRENT DEBUG MODE SET CURRENT DECFLOAT ROUNDING MODE SET CURRENT LOCALE LC_CTYPE SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION SET CURRENT OPTIMIZATION HINT SET CURRENT PRECISION SET CURRENT QUERY ACCELERATION SET CURRENT REFRESH AGE SET CURRENT ROUTINE VERSION SET CURRENT RULES SET CURRENT SQLID SET ENCRYPTION PASSWORD SET PATH SET SCHEMA SET SESSION TIME ZONESIGNAL TRUNCATE UPDATE
xgtydyd 2012-12-06
  • 打赏
  • 举报
回复
很好,顶一下,又学习了一个存储过程的使用技巧
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 WWWWA 的回复:
用1个字段保存 db2 reorg table 你的表名,将此字段 导出为脚本,再执行
但是那个有异常不知道什么原因。
狂奔小蜗牛 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 WWWWA 的回复:
用1个字段保存 db2 reorg table 你的表名,将此字段 导出为脚本,再执行
我想要改成类似这样的 create or replace procedure ac(schema varchar(300),tabNM varchar(300),columnname varchar(200),type varchar(200),dataLength int,out err int) language sql p1:begin atomic declare v_sql varchar(200); declare undo handler for sqlexception set err = 1; if(dataLength=0) then set v_sql = 'alter table '|| schema||'.'||tabNM||' alter column '||columnname||' set data type '||type; else set v_sql = 'alter table '|| schema||'.'||tabNM||' alter column '||columnname||' set data type '||type|| '('||dataLength||')'; end if; prepare s1 from v_sql; execute s1; set err = 0; p2:begin declare v_sql2 varchar(200); set v_sql2 ='REORG TABLE administrator.t'; prepare s2 from v_sql2; execute s2; end p2; end p1
WWWWA 2012-12-06
  • 打赏
  • 举报
回复
用1个字段保存 db2 reorg table 你的表名,将此字段 导出为脚本,再执行
加载更多回复(1)

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧