我有一个表有一个名为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