主页 > 知识库 > 解析如何用SQL语句在指定字段前面插入新的字段

解析如何用SQL语句在指定字段前面插入新的字段

热门标签:承德地图标注公司名需要花钱吗 电销外呼系统软件功能 怎么给高德做地图标注 北京400电话办理多少钱 榕城市地图标注 咸阳电脑外呼系统运营商 美团地图标注商户认证注册 浙江稳定外呼系统供应商 庆阳地图标注
create proc addcolumn
@tablename varchar(30), --表名
@colname varchar(30), --要加的列名
@coltype varchar(100), --要加的列类型
@colid int --加到第几列
as

declare @colid_max int
declare @sql varchar(1000) --动态sql语句
--------------------------------------------------
if not exists(select 1 from sysobjects
where name = @tablename and xtype = 'u')
begin
raiserror 20001 '没有这个表'
return -1
end
--------------------------------------------------
if exists(select 1 from syscolumns
where id = object_id(@tablename) and name = @colname)
begin
raiserror 20002 '这个表已经有这个列了!'
return -1
end
--------------------------------------------------
--保证该表的colid是连续的
select @colid_max = max(colid) from syscolumns where id=object_id(@tablename)

if @colid > @colid_max or @colid 1
set @colid = @colid + 1
--------------------------------------------------
set @sql = 'alter table '+@tablename+' add '+@colname+' '+@coltype
exec(@sql)

select @colid_max = colid
from syscolumns where id = object_id(@tablename) and name = @colname
if @@rowcount > 1
begin
raiserror 20003 '加一个新列不成功,请检查你的列类型是否正确'
return -1
end
--------------------------------------------------
--打开修改系统表的开关
EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE

--将新列列号暂置为-1
set @sql = 'update syscolumns
set colid = -1
where id = object_id('''+@tablename+''')
and colid = '+cast(@colid_max as varchar(10))
exec(@sql)

--将其他列的列号加1
set @sql = 'update syscolumns
set colid = colid + 1
where id = object_id('''+@tablename+''')
and colid >= '+cast(@colid as varchar(10))
exec(@sql)

--将新列列号复位
set @sql = 'update syscolumns
set colid = '+cast(@colid as varchar(10))+'
where id = object_id('''+@tablename+''')
and name = '''+@colname +''''
exec(@sql)
--------------------------------------------------
--关闭修改系统表的开关
EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
go 

调用方法:
exec addcolumn '表名','新列名','新列类型',加到第几个位置
如:
exec addcolumn 'test','id2','char(10)',2
表示将id2这个列加到表test的第二个位置,类型是char(10)。

标签:拉萨 昭通 贵州 新乡 上海 江苏 呼和浩特 重庆

巨人网络通讯声明:本文标题《解析如何用SQL语句在指定字段前面插入新的字段》,本文关键词  解析,如,何用,SQL,语句,在,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《解析如何用SQL语句在指定字段前面插入新的字段》相关的同类信息!
  • 本页收集关于解析如何用SQL语句在指定字段前面插入新的字段的相关信息资讯供网民参考!
  • 推荐文章