sql 通過表名獲取所有列名


因為要做數據遷移,也就是業務數據庫的數據要遷移到歷史數據庫,這兩個數據庫理論上表結構是一樣的,但因為時間原因,可能業務庫升級了表結構,但歷史庫沒有升級,且加字段的順序不一樣,導致 

insert into Tb select * from DB.tB

 

這類的腳本出錯概率比較大,所以今天寫了個函數用來通過表名,自動生成列名

create function GetColumns
(
@tableName varchar(64)
)
returns varchar(4000)
as
/*
作用:自動生成列名,方便存儲過程中調用 
作者:lcl
日期:2015-08-24
*/
begin

DECLARE @columns varchar(4000)

select @columns=''

select @columns=@columns+'['+a.name+'],' from syscolumns a(nolock), sysobjects b(nolock) where a.id=b.id and b.name=''+@tableName+''

select @columns=SUBSTRING(@columns,1,LEN(@columns)-1)

return @columns
end

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM