在存储过程中使用动态SQL的约束

时间:2014-01-22 11:15:30

标签: sql-server

我读了一篇关于在存储过程中构建动态SQL的文章,它确实很好。那篇文章说:

  

当我们需要根据不同的搜索参数检索一组记录时,需要动态SQL

所以,我认为我们可以在每个需要检索不同搜索记录的项目中使用它,并且没有使用动态SQL的约束。这是真的吗?

1 个答案:

答案 0 :(得分:1)

在无法使用参数的情况下,您应该将动态查询作为最后的手段。 这样您就可以保护自己免受SQL注入。

您总是可以使一些参数可选,并使用WHERE子句中的参数:

...
WHERE (@Param1 IS NULL OR Field1=@Param1) AND ... etc
...

这样,如果将@Param1设置为NULL,则表示不使用它。

另一种选择可能是使用全文搜索,您可以在此处找到有关此内容的更多详细信息: http://technet.microsoft.com/en-us/library/ms142571.aspx

相关问题