为传递参数值可能为空的sql server 2005编写动态参数化查询的最佳方法是什么?在SQL Server 2005中编写动态SQL查询
回答
如何像
DECLARE @Table TABLE(
val1 VARCHAR(20),
val2 VARCHAR(20)
)
DECLARE @Param VARCHAR(20)
INSERT INTO @Table SELECT '1','2'
SELECT *
FROM @Table
WHERE (@Param IS NULL OR val1 = @Param)
然而,这会降低性能。 我会建议,当你建立你的动态查询时,不要将参数添加到where子句,如果它不是需要的。
只有可能:
编写查询所有的参数包括,但不是写一个普通的
WHERE
[email protected]
and [email protected]
.....
写
WHERE
(@param1 is null or [email protected])
and (@param2 is null or [email protected])
...
或
WHERE
field1=isnull(@param1,field1)
and field2=isnull(@param2,field2)
...
但如果出现严重的性能问题,请考虑为每个单个案例编写查询。
只有当这个查询在小表上每秒钟执行许多次时,才有理由完整地写它,使用sp_prepare/sp_execute作为它,所以它在这种情况下运行速度最快。
首先让我知道你如何格式化在评论中写的代码,以便我可以以格式化的形式向您发送我的代码 – NoviceToDotNet 2010-08-19 10:04:20
有一个JS在本网站上运行,它会自动格式化它。在写出问题或答案时,请在每行至少加上4个空格(不适用于评论)。或者你可以在这个网站上使用WYSIWYG编辑器的工具面板。我手动添加的空格/标签,因为该网站不管理这些空间/标签。 – AlexanderMP 2010-08-19 10:07:15
我还能做些什么来保持性能 我想知道一些代码,请按照以上方法让我知道吗? – NoviceToDotNet 2010-08-19 16:51:35
- 1. SQL查询在SQL Server 2005
- 2. 编写动态SQL查询
- 3. SQL Server 2005查询
- 4. 查询SQL Server 2005中
- 5. 查询SQL Server 2005中
- 6. 在SQL Server DISTINCT 2005查询
- 7. 如何在SQL Server 2005中编写INSERT IF NOT EXISTS查询
- 8. 编写一个简单的SQL Server 2005动态sql
- 9. 如何动态地在SQL Server 2008中编写查询?
- 10. SQL Server 2005的XML查询
- 11. SQL Server 2005子查询
- 12. SQL Server 2005性能查询
- 13. 枢轴查询 - SQL Server 2005
- 14. SQL Server 2005查询帮助
- 15. SQL Server 2005和.NET查询
- 16. SQL Server 2005求和查询
- 17. SQL Server 2005 - 优先查询
- 18. SQL Server 2005,SELECT DISTINCT查询
- 19. SQL Server 2005 XML查询
- 20. 如何在sql server 2005中编写sql server数据库图表?
- 21. 动态SQL Server 2005透视
- 22. 动态SQL Server查询
- 23. 动态查询的SQL Server
- 24. 动态查询SQL Server
- 25. SQL查询,通配符,MS SQL SERVER 2005
- 26. sql-server 2005中的动态与显式查询
- 27. SQL Server 2005查询使用?这在SQL Server 2012中无效
- 28. 写SQL Server查询
- 29. 如何在SQL Server中的else语句中编写SQL查询
- 30. UPDATE SET中的子查询(sql server 2005)
矿是不是存储过程这是一个参数化查询 – NoviceToDotNet 2010-08-19 09:59:43
转到链接,看到了DOUCMENT及其所有人都在谈论EXCUETING动态参数QUERY – 2010-08-19 10:00:54
你是正确的,但请礼貌;) – abatishchev 2010-08-20 07:33:52