濮阳杆衣贸易有限公司

主頁 > 知識庫 > 解析如何用SQL語句在指定字段前面插入新的字段

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

熱門標簽:承德地圖標注公司名需要花錢嗎 電銷外呼系統(tǒng)軟件功能 怎么給高德做地圖標注 北京400電話辦理多少錢 榕城市地圖標注 咸陽電腦外呼系統(tǒng)運營商 美團地圖標注商戶認證注冊 浙江穩(wěn)定外呼系統(tǒng)供應商 慶陽地圖標注
create proc addcolumn
@tablename varchar(30), --表名
@colname varchar(30), --要加的列名
@coltype varchar(100), --要加的列類型
@colid int --加到第幾列
as

declare @colid_max int
declare @sql varchar(1000) --動態(tài)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 '這個表已經(jīng)有這個列了!'
return -1
end
--------------------------------------------------
--保證該表的colid是連續(xù)的
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
--------------------------------------------------
--打開修改系統(tǒng)表的開關
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)
--------------------------------------------------
--關閉修改系統(tǒng)表的開關
EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
go 

調(diào)用方法:
exec addcolumn '表名','新列名','新列類型',加到第幾個位置
如:
exec addcolumn 'test','id2','char(10)',2
表示將id2這個列加到表test的第二個位置,類型是char(10)。

標簽:拉薩 昭通 貴州 新鄉(xiāng) 上海 江蘇 呼和浩特 重慶

巨人網(wǎng)絡通訊聲明:本文標題《解析如何用SQL語句在指定字段前面插入新的字段》,本文關鍵詞  解析,如,何用,SQL,語句,在,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解析如何用SQL語句在指定字段前面插入新的字段》相關的同類信息!
  • 本頁收集關于解析如何用SQL語句在指定字段前面插入新的字段的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    马鞍山市| 都匀市| 内丘县| 九江县| 大竹县| 德钦县| 三亚市| 卫辉市| 河间市| 正安县| 佛冈县| 嘉兴市| 邮箱| 屯昌县| 兰坪| 丽水市| 高要市| 新闻| 盘锦市| 乐至县| 九龙城区| 汨罗市| 黔西县| 八宿县| 太谷县| 磐石市| 枣庄市| 新建县| 东乌珠穆沁旗| 老河口市| 湖口县| 柘荣县| 双江| 朝阳区| 凤冈县| 龙口市| 满洲里市| 商南县| 宝山区| 岑溪市| 赞皇县|