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永远不会变化,只是传入的参数的值在变化,那每次执行的时候就秒用重新编译,速度自然快多了 !

最新文章

  1. 解决windows下FileZilla server中文乱码问题
  2. Salesforce 执行顺序
  3. js/jquery 去掉空格.回车.换行
  4. 使用attrs.xml自定义属性
  5. 斯坦福第十六课:推荐系统(Recommender Systems)
  6. [HDOJ5542]The Battle of Chibi(DP,树状数组)
  7. Java 集合深入理解(7):ArrayList
  8. 转载:使用sklearn做单机特征工程
  9. NSMutableAttributedString 设置不同颜色,不同字体的String
  10. CSS表格固定列宽
  11. login-登录
  12. 团队作业4——第一次项目冲刺 SiStH DaY
  13. 声音变调算法PitchShift(模拟汤姆猫) 附完整C++算法实现代码
  14. 【原】Java学习笔记016 - 面向对象
  15. char.IsLetter的使用
  16. RxJava学习(一)——简介及其优势
  17. spfa负环判断
  18. thinphp 缓存机制导致代码不跟新
  19. python程序后台运行的实现
  20. MySQL 误删用户

热门文章

  1. iOS-- 重要的链接
  2. webpack 教程资源收集
  3. 关于#pragma once和#ifndefine组合的区别
  4. 如何使用国内源部署Ceph?
  5. 在Ubuntu 14.04安装Nginx
  6. C++_STL
  7. 【BZOJ 3049】【USACO2013 Jan】Island Travels BFS+状压DP
  8. swift中的结构体和枚举
  9. js call与apply方法
  10. java高新技术-反射