我有一個表有一個名爲category的列。列類別的值爲「6,7,9,22,44」。我想知道這種方法是否是SQL Server 2005或2008的高效方法。我基本上將「6,7,9,22,44」值傳遞給存儲過程。我是一個更好的方法的開放鏈接/建議。動態sql - 這是一個好方法嗎?
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ 注意:我應該澄清,我正在維護一個由其他人編寫的應用程序,並且類別列已經有逗號分隔值。我會將數據放在一個單獨的表格中,但短期內我無法做到這一點。關於SQL注入 - 該列由從複選框列表中檢查的值填充。用戶不能輸入或輸入任何會影響特定存儲過程的數據。在這種情況下SQL注入仍然可能嗎?請解釋如何。謝謝。 35~~~
CREATE PROCEDURE [dbo].[GetCategories]
-- Add the parameter that contain the string that is passed in
@catstring varchar(300)
AS
DECLARE @SQLQuery nvarchar(500);
BEGIN
/* Build Transact-SQL String with parameter value */
SET @SQLQuery = 'select id,category from categoryTable where id in ('+ @catstring +')'
/* Execute Transact-SQL String */
EXECUTE(@SQLQuery)
END
GO
不可以。您的代碼容易受到[SQL注入](http://bobby-tables.com/)的影響。 – 2012-03-05 20:50:33
將逗號分隔的值存儲在列中並不好。 – 2012-03-05 20:53:11
您是否使用C#或其他服務器端編程語言? – Meryovi 2012-03-05 20:58:49