sp

   execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql

  sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,如:

  exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out

  ,@id

  @sql为拼成的动态sql

  N'@count int out,@id varchar(20)'为拼成的动态sql内的参数列表

  @cou out,@id为为动态sql内参数列表提供值的外部参数列表

  那么它们之间有什么区别呢?

  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 @sql nvarchar(2000)

  declare @cou int

  declare @id varchar(20)

  set @id='1'

  set @sql='select @count=count(*) from emp where id=@id'

  exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out

  ,@id

  print @cou

  2.性能

  可以看到,如果用exec,由于每次传入的@id不一样,所以每次生成的@sql就不一样,这样每执行一次Sql2005就必须重新将要执行的动态Sql重新编译一次

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

  注意:

  1.sp_executesql要求动态Sql和动态Sql参数列表必须是Nvarchar,比如上个例子的@sql,N'@count int out,@id varchar(20)'我记得在sql2005中Varchar也可以的,但是我打了Sp3补丁后就不行了,必须为Nvarchar

  2.动态Sql的参数列表与外部提供值的参数列表顺序必需一致,如:

  N'@count int out,@id varchar(20)', @cou out,@id

  @count 对应 @cou,@id对应@id

  如果不一致,必须显式标明,如:

  N'@count int out,@id varchar(20)', @id=@id, @count=@cou out

  3.动态SQl的参数列表与外部提供参数的参数列表参数名可以同名

时间: 2025-01-21 01:26:19

sp的相关文章

【Android】dip、dp、sp、pt和px的区别

转载自:http://www.ityoudao.com/Web/Android_657_2256.html 1.概述 过 去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上 运行该程序,则用户界面会显得很小.在有些情况下,用户界面可能会小到难以看清内容.由此我们采用与分辨率无关的度量单位来开发程序就能够解决这个问题. Android应用开发支持不同的度量单位. 2.度量单位含义 dip: device

dip px:显示单位px和dip以及sp的区别

dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA cwj推荐使用这个,不依赖像素. px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用: sp: scaled pixels(放大像素). 主要用于字体显示best for tex

刷新SP到一数据库方便制作XSD文件

数据|数据库|刷新 ------------------------------------------------------------------------------------        刷新SP到数据库         ----                    ---- &Old& 来源数据库名               ---- &New& 目标数据库名               ----                    ---- 目标数

后SP时代 个人网站集体迷失

个人网站 4月20日,蔡文胜要在厦门再举办一届中国站长大会.看到最后敲定的邀请名单时,他却有些感触. 老蔡曾是中国最知名的个人站长.尽管他的网站265.com已经获得了巨额投资,有了数百名员工,并在北京最繁华的CBD立足,不再是昔日的小作坊了.但他依然喜欢被冠以"个人站长"的头衔,每年一度的站长大会,也被众多个人站长视为交流的盛宴. 但今年却有些不一样.因为与去年相比,有四成以上的个人站长已经消失在受邀名单之外了."个人网站淘汰起来真的很快."老蔡这样向<财经

SP行业人才招聘的困局

昨日一朋友来找我,问我能不能帮忙找个程序员,他们招不到人.我问了一下他们的招聘要去和待遇,其实并不算低,但是我的朋友还是给我说,不好招.让我帮忙推荐一下,我帮他推荐到sp英才网,让他去那里发个帖子看看. 想来最近SP行业不太景气,人员流动很大,按道理应该好找人的.为啥招聘不到呐?我看有以下几个原因: 1.原有SP是个圈钱的行业,原有人员都被养肥了,待遇很好.现今SP行业不景气,很多人员还想拿原来的高薪,但这并不容易. 2.对行业前景的失望,导致很多人转行. 针对上面说的这种情况,我想对所有想跳槽

当欺骗成为SP行规

信产部近日又集中曝光了69家SP企业的违规行为,这次把法人代表的名字也一块儿给"公示"了.不过说实话,我们都懒得报道了,相信广大读者对处罚SP的新闻也已经"阅读疲劳"了.信产部定期.不定期地都会把违规SP拉出来"游街示众",可我想问的是,这些违规SP咋就跟野草一样"野火烧不尽"呢? 从统计数据看,违规SP的确是越来越少了:手机用户根据自己破财的频率,相信也能感受到"短信陷阱".SP乱收费的减少.然而,告诉你

利用MSSQL sp自制未公开的加密函数

函数|加密 Microsoft SQL Server是如何加密口令的?如何自制未公开的加密函数? 如果对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢? 其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错. 让我们来看看它是怎么做的,注意这一行select @passwd = pwde

谁比谁流氓,终于轮上报纸收SP的保护费了

一个男人不眼红张朝阳开宝马有游艇还未婚那是不正常的.一位Sales听说有人比房地产商还敢花钱砸广告不一闭眼就扑上去哪怕最后是火坑那是不敬业的. SP,这个曾经被超女李宇春拽到前台的暴发户,曾经是互联网网站最大的广告主,多少站长都是做SP相关联盟脱贫致富加入房东和股东的行列的.这个动辄一掷千金,拿几千万广告费交保护费普渡众生钱包的SP,终于落到报纸手里了.信产部全面叫停电视互动游戏.SP的网站广告不能投了之后,垃圾电视广告也不能投了.可以逻辑推理的未来,3G手机上的各类广告肯定也是归信产部管的,也

使用ASP与SP执行DTS事务。

执行 建立下面这样的SP: CREATE PROCEDURE doPublish ASexec master..xp_cmdshell 'dtsrun /Ssql1 /NPublish /E' 其中:/S = SQL Server 主机名/N = DTS 包名 你也可以使用 /E 参数来使用信任联系方式或者用 /U/P 参数设置用户名和密码.

基于CMPP3.0协议SP端的实现(C#)

最近一段是时间项目可能需要提供短信功能,客户作为一个 SP 端提供短信 业务:网上搜索了一番,找到了比较不错的 CMPP30 类的代码,该代码基本实现 了 CMPP3.0 协议中的短信收发.网络重连等功能.本人将其重新改造,提供了 同步发送.异步发送的支持(原先版本的异步发送并非标准的 .NET 异步发送模 式,这部分代码是一个异步操作实现的"范本",可供大家参考),增加了对 PROVISION 接口的支持. 本人已将这些代码打包为一个 RAR 文件,稍后会上传到 Internet 供