批量更改某数据库中所有表中某字段的类型
2006-08-16 17:41
381 查看
-- =======================================================
-- 批量更改某数据库中所有表中某字段的类型
-- =======================================================
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_NAME = N'sp_AlterColumnType'
)
DROP PROCEDURE sp_AlterColumnType
GO
CREATE PROCEDURE sp_AlterColumnType
AS
-- =============================================
-- 循环当前数据库中所有用户建的表
-- =============================================
DECLARE @TableName nvarchar(100)
DECLARE @TableID nvarchar(100)
DECLARE cursor_CustomTable CURSOR FOR
SELECT [name],[ID] FROM sysobjects where type ='U'
OPEN cursor_CustomTable
FETCH NEXT FROM cursor_CustomTable INTO @TableName,@TableID
WHILE @@FETCH_STATUS = 0
BEGIN
-- =============================================
-- 循环当前表中所有列,取出列名和列的类型
-- =============================================
DECLARE @ColumnName nvarchar(100)
DECLARE @ColumnType nvarchar(100)
DECLARE cursor_Column CURSOR FOR
select [name],xtype from syscolumns where [id] = @TableID and xtype=(select xtype from systypes where name='numeric')
OPEN cursor_Column
FETCH NEXT FROM cursor_Column INTO @ColumnName,@ColumnType
WHILE @@FETCH_STATUS = 0
BEGIN
--在此处修改列类型为numeric(14,2)
exec('ALTER TABLE '+@TableName +' ALTER COLUMN '+@ColumnName +' numeric(14,2) null')
FETCH NEXT FROM cursor_Column INTO @ColumnName,@ColumnType
END
CLOSE cursor_Column
DEALLOCATE cursor_Column
-- 循环到下一个表.
FETCH NEXT FROM cursor_CustomTable INTO @TableName,@TableID
END
CLOSE cursor_CustomTable
DEALLOCATE cursor_CustomTable
GO
-- 批量更改某数据库中所有表中某字段的类型
-- =======================================================
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_NAME = N'sp_AlterColumnType'
)
DROP PROCEDURE sp_AlterColumnType
GO
CREATE PROCEDURE sp_AlterColumnType
AS
-- =============================================
-- 循环当前数据库中所有用户建的表
-- =============================================
DECLARE @TableName nvarchar(100)
DECLARE @TableID nvarchar(100)
DECLARE cursor_CustomTable CURSOR FOR
SELECT [name],[ID] FROM sysobjects where type ='U'
OPEN cursor_CustomTable
FETCH NEXT FROM cursor_CustomTable INTO @TableName,@TableID
WHILE @@FETCH_STATUS = 0
BEGIN
-- =============================================
-- 循环当前表中所有列,取出列名和列的类型
-- =============================================
DECLARE @ColumnName nvarchar(100)
DECLARE @ColumnType nvarchar(100)
DECLARE cursor_Column CURSOR FOR
select [name],xtype from syscolumns where [id] = @TableID and xtype=(select xtype from systypes where name='numeric')
OPEN cursor_Column
FETCH NEXT FROM cursor_Column INTO @ColumnName,@ColumnType
WHILE @@FETCH_STATUS = 0
BEGIN
--在此处修改列类型为numeric(14,2)
exec('ALTER TABLE '+@TableName +' ALTER COLUMN '+@ColumnName +' numeric(14,2) null')
FETCH NEXT FROM cursor_Column INTO @ColumnName,@ColumnType
END
CLOSE cursor_Column
DEALLOCATE cursor_Column
-- 循环到下一个表.
FETCH NEXT FROM cursor_CustomTable INTO @TableName,@TableID
END
CLOSE cursor_CustomTable
DEALLOCATE cursor_CustomTable
GO
相关文章推荐
- 批量更改某数据库中所有表中某字段的类型
- 【oracle】批量更改所有表的同一字段类型
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 【oracle】批量更改所有表的同一字段类型
- 更改数据库中所有表中所有相同字段的长度或数据类型
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 批量更改数据库指定字段类型
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
- SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型(转)
- 获取数据库所有表及其字段名称、类型、长度
- 获取数据库所有表及其字段名称、类型、长度
- 转载Sql 获取数据库所有表及其字段名称,类型,长度
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
- 查询数据库内不同表间相同字段不同类型,不同长度的所有字段
- oracle 获取数据库所有表,和获取表所有字段和类型
- SQL获取所有用户名,数据库名、所有表名、所有字段名及字段类型
- 批量修改数据库中字段的数据类型
- 如何获取SQL Server所有的数据库名、表名、字段名及字段类型?
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法