2013-04-18 27 views
0

我的問題是基本的。在查詢中連接變量 - SQL Server 2008

我創建的存儲的過程,並具有了下列變量:

SELECT ID 
FROM TABLE1 
WHERE indStatus = 'True' 
AND (Description LIKE '%' + @ STRING + '%') 

@ConcatenarClausulaWhere 

程序的執行過程中,幾個條件在此變量級聯的WHERE後要插入

我的目的是做這樣的事情:

SELECT ID 
FROM TABLE1 The 
WHERE indStatus = 'True' 
AND (Description LIKE '%' + @ STRING + '%') + @ ConcatenarClausulaWhere 

但是,這是不可能的。爲什麼?

我使用SQL Server 2008的

回答

3

你需要動態SQL爲WHERE條款追加到查詢。一個SELECT聲明不只是一個字符串。您還需要對此處的SQL注入非常謹慎。你如何驗證哪些用戶正在輸入where子句參數?

DECLARE @sql NVARCHAR(MAX) = N'SELECT ID FROM dbo.TABLE1 
    WHERE indStatus = ''True'' AND (Description LIKE @String)' 
    + @ConcatenarClausulaWhere; 

EXEC sp_executesql @sql, N'@String NVARCHAR(MAX)', N'%' + @STRING + '%';