sqlserver中动态sql语句应用

所有人知道select * from tablename where aa=bb的用法
大部分人知道 exec('select * from tablename where aa=bb')的用法
但是仍然有很多人不知道sp_executesql的用法,他可以让动态sql接收参数且把查询结果返回到一个参数

 

  1. --接收条件值参数的静态sql   
  2. declare @name varchar(100)   
  3. set @name='sysobjects'   
  4. select name from sysobjects where object_name(id)=@name  
  5. go   
  6. --接收整个条件描述的简单动态sql   
  7. declare @where varchar(100)   
  8. set @where='object_name(id)=''sysobjects'''   
  9. exec('select name from sysobjects where '+@where)   
  10. go   
  11.   
  12. --接收整个条件描述,且把查询返回到变量参数的复杂动态sql   
  13. declare @where nvarchar(100)   
  14. set @where=N'object_name(id)=''sysobjects'''   
  15. declare @ret varchar(100)   
  16. declare @sql nvarchar(1000)   
  17. set  @sql=N'select  @ret=name from  sysobjects where '+  @where  
  18. exec    sp_executesql @sql,N'@ret varchar(100)  output' ,@ret=@ret   output    
  19. select @ret     
  20. go   
  21.   
  22. --也许不了解第三种用法的朋友会质疑,从一个@where变量的条件提取数据到@ret变量有什么用,一个复杂的参考请参见我以前改编的   
  23. --<<伴水的划拳机器人>>的sql版,它完全是通过动态sql来实现的。   
  24. --http://topic.csdn.net/u/20080429/01/ccb2d78d-d7cd-4332-8fd8-667714f2ed62.html  

出处:http://blog.csdn.net/jinjazz/archive/2008/07/22/2688781.aspx

 
[收藏] [返回顶部] [打印本页] [关闭窗口]  
 
 
 
 相关主题:  
 
SQL 快速删除表中大量数据的方法
sqlserver中动态sql语句应用
数据库查询中的特殊字符的问题
 
 网友评论:
正在加载……
 
*评论者:
主页:
标题:
*内容:
【声明】 地球黑匣子网刊载的资讯及其他内容均由网友提供分享 并且纯属作者个人观点,不表示地球黑匣子网同意其说法或描述,仅为提供更多信息,也不构成任何建议。网友转载请注明原作者姓名及出处。如有侵犯到您的版权,请与我们联系,我们会马上进行重新整理!
最新日志列表
人气主题
 
 
 
 
声明:本网站部分内容属网民发布和来自于互联网。对于引用、发布、转载和放置的内容(广告、链接、文字、图像或声音),所产生的所有法律责任,都将由信息归属者或者广告厂商提供者承担,并且由此产生的版权、署名权的异议、纠纷,本网站概不承担任何责任,本站转载素材仅供大家欣赏和分享,切勿做为商业目的使用。
 
Copyright © 地球黑匣子网 2007.06 - 2008   Email:dqhxzcom@163.com
鲁ICP备07501416号   QQ:254212580 网站管理