sp_executesql 比 之前的exec @sql 区别在可以实现参数的传入传出

declare @sql nvarchar(2000) 
declare @pid varchar(20) 
set @pid='001' 
set @sql='select count(1) from Sale (nolock) where pid=' + @pid 
exec @sql

在传统的 exec 是无法将Count(*)传出到外面 的

但是如果用 sp_executesql 则很简单

declare @sql nvarchar(2000)

declare @saleCount int 
declare @pid varchar(20) 
set @pid='001' 
set @sql='select @count=count(1) from Sale  (nolock) where pid=@pid' 
exec sp_executesql @sql, N'@count int out,@pid varchar(20)', @saleCount out ,@id 
print @saleCount

set statistics time on
Go

declare @sql nvarchar(2000)

declare @recordCount int
declare @OpType int
set @OpType= 300305
set @sql='select @Count=count(1) from UserAmountLog (nolock) where OpType=@type'
exec sp_executesql @sql, N'@Count int out,@type int', @recordCount out ,@OpType
print @recordCount

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

sp_executesql 使用的更多相关文章

  1. EXEC sp_executesql

    declare @sql nvarchar(max)declare @nu int set @sql='SELECT * FROM [FMTest].[dbo].[FM_Radio_Station]' ...

  2. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...

  3. sp_executesql得到执行sql语句的返回值

    执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...

  4. sp_executeSql 用法

    今天遇到了一个难题 就是把 一个拼接sql语句 的返回值 赋值给一个变量 经研究 要用sp_executeSql这个存储过程 据说是从sql 2005才开始有的 代码如下: declare @str ...

  5. 动态SQL语句之sp_executesql的使用

    sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: exec sp_executesql @sql, N'@item_name nvarchar(10 ...

  6. 动态sql语句基本语法--Exec与Exec sp_executesql 的区别

    http://www.cnblogs.com/goody9807/archive/2010/10/19/1855697.html 动态sql语句基本语法 1   :普通SQL语句可以用Exec执行   ...

  7. SQLServer : EXEC和sp_executesql的区别

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql.通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  8. sp_executesql的用法

    之前做项目的时候负责一个成绩分析的模块儿,写存储过程的时候因为考试的科目是不固定的,所以导致查找成绩的sql语句也是动态的,就用到了sp_executesql,下面就来说一说它的用法 需求:表名是动态 ...

  9. SQL sp_executesql【转】

    execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: ...

随机推荐

  1. MVC————添加视图时没有模型可用

    我们有时想创建强类型视图,却发现下拉列表里面没有东西,这时不要慌,这是因为你没有编译造成的,编译一下就好了~

  2. 【转】赶集网mysql开发36军规

    原文链接:https://segmentfault.com/a/1190000004711147 写在前面的话:总是在灾难发生后,才想起容灾的重要性:总是在吃过亏后,才记得曾经有人提醒过. (一)核心 ...

  3. 贪吃蛇C#和JAVA实现

    using System; using System.Windows.Forms; using System.Drawing; class Window : Form { Point[] a = ]; ...

  4. github page 和 hexo 搭建在线博客

    目录: 安装node.js与git 常用git命令 安装hexo 配置hexo hexo发布到github 1.安装node.js和git工具 https://nodejs.org/en/ 直接下载安 ...

  5. Beta版本冲刺———第三天

    会议照片: 项目燃尽图: 1.项目进展: 今天解决的进度:对游戏结束的检测进行了完善,使分数标签和最高分标签的变化更加合理. 仍在进行对排行榜分数变更的实现 2.每个人每天做的事情 郭怡锋:汇总工作进 ...

  6. VS2015中GLAUX库的链接问题

    最近学习OpenGL,照着例子写了个程序,用到了GLAUX库. #include <gl\glaux.h> #pragma comment(lib, "glaux") ...

  7. MySQL server PID file could not be found!

    重启mysql提示MySQL server PID file could not be found! Starting MySQL...The server quit without updating ...

  8. iPad开发--QQ空间,处理横竖屏布局,实现子控件中的代理

    一.主界面横竖屏效果图 二.主界面加载, 初始化Dock(红色框的控件),判断程序启动时的屏幕方向.调用自己- (void)transitionToLandScape:(BOOL)isLandScap ...

  9. jsrender for object

    <div id="result"></div> <script id="theTmpl" type="text/x-js ...

  10. 让Chrome支持Ajax/$http方式读取本地文件

    在开发中经常写些小demo调试一下插件什么的 数据源又经常手动构造分离为一个单独的文件.用ajax或$http去访问时总是拒绝访问.这个时候可以给Chrome的快捷图标加启动参数,让浏览器允许js访问 ...