动态sql

时间:2016-02-03 09:22:38

标签: sql sql-server dynamic-sql

我使用了大量的动态SQL - 我认为必须有一些好的指南,框架和/或工具来帮助人们使用动态SQL查询。 我正在寻找关于如何构建动态SQL查询的确切建议(没有明显的解决方案,只需编写它,然后添加'等等)。

这里的一个大问题是,它有时会变得混乱(包含另一个动态sql等的动态sql)。

如果它很重要,我使用的是sql-server。

我会接受任何建议, 谢谢! ;)

2 个答案:

答案 0 :(得分:0)

模糊的问题..但有一条建议:

使用sp_executesql并尽可能传入任何变量/参数以防止SQL注入

答案 1 :(得分:0)

如果可能,尽可能生成动态SQL,不要自己编写。

执行动态SQL而不将参数附加到SQL字符串,使用参数并将它们传递给sp_executesql以避免必须进行双引号(太繁琐)。它也是防止SQL注入的坚实后盾。例如:

DECLARE @stmt NVARCHAR(MAX)='SELECT * FROM your_table WHERE id=@par1 AND ... AND thename=@parn;';
EXECUTE sp_executesql @stmt, N'@par1 INT, ..., @parn VARCHAR(256)', @par1, ... , @parn;