码迷,mamicode.com
首页 > 数据库 > 详细

MSSQLSERVER数据库- SP_EXECUTESQL的使用

时间:2014-06-26 20:32:50      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   http   color   

 

EXEC和SP_EXECUTESQL有什么区别呢?

1,它们之间最大的区别是嵌入式的参数,如下面一个语句 

declare @sql nvarchar(2000) 
declare @id varchar(20) 
set @id=1 
set @sql=select count(*) from emp where id= + @id 
exec @sql 

我想把得到的count(*)传出来,用传统的exec是不好办到的,但是用sp_executesql则很容易就办到了,如下:

DECLARE @strSql NVARCHAR(2000);
DECLARE @Params NVARCHAR(2000);
DECLARE @sl INT;

SET @strSql = SELECT @sl = COUNT(*) FROM dbo.SHANGPIN;
SET @Params = @sl int out
EXEC sp_executesql @strSql,@Params,@sl OUT
PRINT @sl;

2.性能 
可以看到,如果用exec,由于每次传入的@id不一样,所以每次生成的@sql就不一样,这样每执行一次Sql2005就必须重新将要执行的动态Sql重新编译一次 
但是sp_executesql则不一样,由于将数值参数化,要执行的动态Sql永远不会变化,只是传入的参数的值在变化,那每次执行的时候就秒用重新编译,速度自然快多了

MSSQLSERVER数据库- SP_EXECUTESQL的使用,布布扣,bubuko.com

MSSQLSERVER数据库- SP_EXECUTESQL的使用

标签:style   class   blog   code   http   color   

原文地址:http://www.cnblogs.com/cxeye/p/3808119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!