SQL脚本循环修改数据库字段类型
数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确。比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的。
我最近就遇到了一个需求,需要修改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;
就这样,一个循环搞定。
SQL脚本循环修改数据库字段类型的更多相关文章
- 使用SQL命令行更改数据库字段类型
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型 添加列 ALTER TABLE students ADD COLUMN address VARCHAR(100) DEFAU ...
- SQL Server数据库字段类型说明
SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...
- flask修改数据库字段的类型和长度
flask修改数据库字段的类型和长度 在将models中的字段的db.String(256)修改为db.String(1024)后,执行migrate和upgrade操作后,发现数据库并没有更新, ...
- SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改
当数据库有数据修改数据库字段时,默认是阻止的! 工具---选项---设计器---阻止保存要求重新创建表的更改(取消钩)
- 【sql】ALTER更新数据库字段
--数据库表字段更新sql脚本,以下是示例 --新增列字段 --alter table table_name add column `address` varchar() COLLATE utf8_b ...
- sql脚本来获取数据库中的所有表结构了
sql脚本来获取数据库中的所有表结构了,代码如下: use AdventureWorks2008 go SELECT (case when a.colorder=1 then d.name else ...
- 主流数据库字段类型转.Net类型的方法
最近在阅读一些开源的代码,发现其中有些方法总结的很全面,至少在我做同样的事情时候,需要抓破脑袋想活着google,现在看到了这个关于主流数据库字段类型转.Net类型的方法,故收藏之,也顺便分享给那些能 ...
- SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称
SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称 原来数据库名称为 aa,物理文件名称为 aa.mdf 和 aa_log.ldf: 需要修改数据库名称为 bb,物理文件名 ...
- 将现有的sql脚本导入 Oracle 数据库,中文乱码问题
将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...
随机推荐
- SQL Server游标的使用【转】
游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式是: ...
- C#操作XML小结(转)
一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); ...
- private成员变量真的私有吗?(用指针刨他祖坟)
今天写程序时突然想到的,为什么不用指针去获取类的成员变量呢.于是做了这个实验.首先定义了一个类: class Test { private: int i; char c; int* p; public ...
- 浅谈export 以及环境变量
简要说一下env,set,export的区别:env命令显示环境变量,set和export显示环境变量和自定变量. export:可以讲自定变量转化为环境变量之前有一个疑惑,我们定义环境变量PATH时 ...
- 用pygame学习初级python(一) 15.4.19
最近有计划要学一下python,主要是要用flask.django一些框架进行后端的学习工作,但是在web应用之前希望进行一些基础的项目进行一些语法的练习,熟悉一下写法, 这个时候我就想先做几个小游戏 ...
- android开发中的变量名称
非公有的变量前面要加上小写m, 静态变量前面加上小写s, 其它变量以小写字母开头, 静态变量全大写 例子 public class MyClass { public static final int ...
- Stanford机器学习笔记-1.线性回归
Content: 1. Linear Regression 1.1 Linear Regression with one variable 1.1.1 Gradient descent algorit ...
- codeforces gym-101078
题目链接: http://codeforces.com/gym/101078 A: #include <iostream> #include <cstdio> #include ...
- CSU 1060 Nearest Sequence
题意:求三个序列的最长公共子序列. 思路:一开始以为只要求出前两个的LCS,然后和第三个再求一遍LCS就是答案了.但是样例就对我进行啪啪啪打脸了.实际上就跟两个序列的差不多,换成三维的就行了. 代码: ...
- View (四)视图状态及重绘流程分析
相 信大家在平时使用View的时候都会发现它是有状态的,比如说有一个按钮,普通状态下是一种效果,但是当手指按下的时候就会变成另外一种效果,这样才会给 人产生一种点击了按钮的感觉.当然了,这种效果相信几 ...