2013-09-29 93 views
0

請參閱下面的SQL:動態SQL連接字符串

declare @TableName VarChar(100) 
declare @field1 varchar(100) 
declare @field2 varchar(100) 
set @TableName = 'Person.Person' 
set @field1 = 'LastName' 
set @field2 = 'FirstName' 
Declare @SQL VarChar(1000) SELECT @SQL = 'SELECT ' + @field1 + ',' + @field2 + ' FROM ' 
SELECT @SQL = @SQL + @TableName 
Exec (@SQL) 

的結果集出現在兩列,即名字和姓氏。是否可以連接列以便輸出如此?

Ian,McFearce 
Jane,McAndrew 

我發現這個網站上的報價:http://technet.microsoft.com/en-us/library/ms188001.aspx,其中規定:「連接兩個字符串與+運營商,都不允許」。所以我懷疑這是不可能的。有沒有解決方法。

+0

ur sql需要選擇lastname +','+個人的名字 – mhn

+0

'@ TableName'最終來自哪裏?爲什麼您的系統設計得可以讓人們從任何表格中選擇任何列? –

+0

@Aaron Bertrand,系統搜索許多具有不同模式的本地數據庫。那有意義嗎? – w0051977

回答

2
declare @TableName VarChar(100) 
declare @field1 varchar(100) 
declare @field2 varchar(100) 
set @TableName = 'dbo.Person' 
set @field1 = 'LastName' 
set @field2 = 'FirstName' 
Declare @SQL VarChar(1000) SELECT @SQL = 'SELECT ' + @field1 + '+'',''+' + @field2 + ' FROM ' 
SELECT @SQL = @SQL + @TableName 
print @sql 
Exec (@SQL) 
+0

感謝您的+1。你能否評論webstie的報價,即「用+運算符連接兩個字符串,是不允許的」。 – w0051977

+0

我想這意味着,你不能有Exec(@SQL + @ WhereClause)之類的東西。 @stmt應該是一個unicode常量或unicode變量 – mhn

+0

最後,由於SQL注入風險,您認爲這種方法應該被忽略嗎? – w0051977