首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问存储过程执行的有关问题

2012-06-20 
请教存储过程执行的问题以下4种执行存储过程的区别是什么?我实际测试了,貌似没什么区别,执行计划都能复用.

请教存储过程执行的问题
以下4种执行存储过程的区别是什么? 
我实际测试了,貌似没什么区别,执行计划都能复用.

SQL code
① exec [sp_name] [parameter]② exec sp_executesql  N'exec [sp_name] [parameter]',                                           N'[parameter define]',                                           N'[parameter value]'③ declare @sql varchar(6000)       select @sql='exec [sp_name] [parameter]'       exec(@sql) ④ declare @p int       exec sp_prepexec  @p output,                                          N'[parameter define]',                                          N'exec [sp_name] [parameter]',                                         [parameter]=[value]       exec sp_execute @p, [parameter]=[value]


[解决办法]

[解决办法]
我忘记在哪本书看过,exec是每次都要编译,而sp_execute 是不需要每次编译的。其他我就不清楚了
[解决办法]
通常,sp_executesql则更具有优势,它 提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在 后面的例子中会详加说明),还可以编写更安全的代码。EXEC在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用 sp_executesql.
[解决办法]
探讨
通常,sp_executesql则更具有优势,它 提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在 后面的例子中会详加说明),还可以编写更安全的代码。EXEC在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用 sp_executesql.

[解决办法]
SQL code
SELECT cacheobjtype,objtype,usecounts,sql FROM sys.syscacheobjects WHERE sql NOT LIKE '%cache%' AND sql NOT LIKE '%sys.%' AND sql NOT LIKE '%sp_executesql%' 

热点排行