SQL脚本循环修改数据库字段类型
2015-03-11 10:27
477 查看
数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确。比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的。
我最近就遇到了一个需求,需要修改20个字段的类型,把相同的脚本写20遍吗?NO,NO,NO!
========================================================================
我有这么一张表“Attribute”,里面有60个字段,分别是Attribute01、Attribute02、Attribute03、…… Attribute60。现在我需要把Attribute41到Attribute60的字段类型修改为ntext。
SQL Server:
Oracle:
就这样,一个循环搞定。
我最近就遇到了一个需求,需要修改20个字段的类型,把相同的脚本写20遍吗?NO,NO,NO!
========================================================================
我有这么一张表“Attribute”,里面有60个字段,分别是Attribute01、Attribute02、Attribute03、…… Attribute60。现在我需要把Attribute41到Attribute60的字段类型修改为ntext。
SQL Server:
DECLARE @i int SET @i=41 DECLARE @fieldName varchar(32) DECLARE @sqlStatement varchar(MAX) WHILE @i<=60 BEGIN SET @fieldName = 'Attribute' + cast(@i as varchar) SET @sqlStatement ='ALTER TABLE [Attribute] ALTER COLUMN ['+@fieldName+'] [ntext] NULL' EXEC (@sqlStatement) SET @i=@i+1 END
Oracle:
DECLARE i NUMBER; fieldName VARCHAR2(32); fieldNameBK VARCHAR2(32); sqlStatement VARCHAR2(1024); BEGIN i:=41; LOOP fieldName:='Attribute' || TO_CHAR(i); fieldNameBK:='Attribute' || TO_CHAR(i) || '_bak'; --处理CLIPEX表 sqlStatement:='Alter table Attribute ADD (' || fieldNameBK || ' NCLOB null)'; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='Update Attribute set ' || fieldNameBK || ' = ' || fieldName; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='alter table Attribute drop COLUMN ' || fieldName; EXECUTE IMMEDIATE sqlStatement; sqlStatement:='alter table Attribute rename COLUMN ' || fieldNameBK || ' to ' || fieldName; EXECUTE IMMEDIATE sqlStatement; i:=i+1; EXIT WHEN i > 60; END LOOP; COMMIT; END;
就这样,一个循环搞定。
相关文章推荐
- sqlserver中用游标,拼接sql,批量修改数据库字段类型
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
- SQL 修改字段类型和长度,常见类型介绍及数据库设计工具PowerDesigner和astah
- 批量生成修改数据库表字段类型SQL脚本
- sql 修改数据库表中字段类型和长度
- java中常见数据库字段类型与java.sql.Types的对应
- oracle中使用SQL语句修改字段类型
- 通过脚本运行修改数据库表的字段默认值
- 显示数据库所有表名,字段名,数据类型的sql语句 - 广州网站建设
- SQL修改数据库名字、表名字、字段名字
- Sql :获取数据库所有表及其字段名称、类型、长度 (也可以指定单张或若干张表的详细信息。。。)
- sql修改表的字段类型
- 用sql修改数据库中表内字段名
- SQL 新增/修改 表字段列的类型等
- SQL如何修改被计算字段引用的字段类型
- SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型
- 数据库字段类型与java.sql.types的对应-Sybase
- SQL得到数据库的字段类型,及长度
- 修改字段类型为“标识”,并设置该字段为主键的SQL语句怎么写
- 脚本修改sql字段长度