簡體   English   中英

T-SQL復制現有列信息

[英]T-SQL Copy existing Column information

我當前正在創建一個SP,它將信息從表a復制到表b。 我面臨的問題是可以在表c中自由定義要復制的信息。 因此,例如:表a具有列test nvarchar(50),test1 nvarchar(79),beta2 nvarchar(80)和id int

在設置表中,定義了將test和test1列從表a復制到表b。

我確實檢查了該列是否已經存在。 現在,它在以下幾行失敗:

DECLARE @dataType nvarchar(100)
DECLARE @statement nvarchar(250)

set @dataType = 
SELECT c.*, s.name 
FROM sys.columns c 
INNER JOIN sys.objects o 
ON c.object_id = o.object_id 
INNER JOIN sys.types s 
ON c.user_type_id = s.user_type_id 
WHERE o.name = 'a' AND c.name = 'test'
set @Statement = 'Alter table dbo.t_hist_Devicereport add test ' + @dataType 
exec (@Statement)

錯誤消息是我在SELECT附近語法不正確,但是如果我自己運行SELECT語句,它就可以正常工作...我正在使用SQL Server 2005,以防出現問題

DECLARE @dataType nvarchar(100)
DECLARE @statement nvarchar(250)
SELECT @dataType = CASE WHEN s.name = 'nvarchar' THEN 'nvarchar(' + CAST(c.max_length AS varchar(4)) + ')' ELSE s.name END             
FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id 
                  JOIN sys.types s ON c.user_type_id = s.user_type_id 
WHERE t.name = 'a' AND c.name = 'test'

SET @Statement = 'Alter table dbo.t_hist_Devicereport add test ' + @dataType 
EXEC sp_executesql @Statement

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM