CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

高手解说一下exec动态执行的原理!

楼主zhangjian01361(★非也非也★)2005-12-01 08:52:00 在 MS-SQL Server / 基础类 提问

关exec和sp_executesql的执行原理或者它们是怎样执行任务的! 问题点数:20、回复次数:5Top

1 楼zhangjian01361(★非也非也★)回复于 2005-12-01 13:58:05 得分 0

不会吧!这个问题竟然没有人知道?Top

2 楼lsqkeke(可可)回复于 2005-12-01 14:36:41 得分 0

我也不知道   !  
  帮你顶!   :)Top

3 楼lsp69(浪子神剑)回复于 2005-12-01 16:42:39 得分 2

exec   去执行sql语句时,会去触动系统存储过程sp_executesql  
   
  sp_executesql:只是一系统存储过程,在比较底层运行Top

4 楼qiqingshizhe(凄清使者)回复于 2005-12-01 16:44:41 得分 8

首先從兩者的使用語法上,前者為:  
  exec(@string)  
  @string是一個字符串常量,它的值與一般的(非動態)tranact—sql語句是等價的,執行結果輸齣,還有他不能傳帶變量。在exec語句執行前,不會編譯exec語句內的語句  
  后者:  
  exec   sp_executesql   @string,N'@params1   data_type,@params2   data_typt....',  
  @par1,@par2,.....  
  可以嵌入參數.各個常量,變量必須是可以隱式轉換為ntext的unicode編碼的數據類型  
  如果數據@params[x]在執行過程要輸齣,則在后麵加上‘output’,在后麵@par[y]中定義  
  一個output類型,那么@par[y]=@params[x]返囬,可以將@pqr[y]作為常量使用  
   
  還有其它自己雖然明白一點,但講不齣來,隻可意會。。。。。。Top

5 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-01 16:48:30 得分 10

 
  --动态sql语句用法    
  --1   :普通SQL语句可以用Exec执行    
   
  --eg:        
  Select   *   from   tableName    
  Exec('select   *   from   tableName')    
  Exec   sp_executesql   N'select   *   from   tableName'         --   请注意字符串前一定要加N    
   
  --2:字段名,表名,数据库名之类作为变量时,必须用动态SQL    
   
  --eg:        
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'    
  Select   @fname   from   tableName                             --   错误,不会提示错误,但结果为固定值FiledName,并非所要。    
  Exec('select   '   +   @fname   +   '   from   tableName')           --   请注意   加号前后的   单引号的边上加空格    
   
  --当然将字符串改成变量的形式也可    
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'   --设置字段名    
   
  declare   @s   varchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功    
  exec   sp_executesql   @s       --   此句会报错    
   
   
   
  declare   @s   Nvarchar(1000)     --   注意此处改为nvarchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功            
  exec   sp_executesql   @s       --   此句正确    
   
  --3.   输出参数    
  declare   @num   int,    
                  @sqls   nvarchar(4000)    
  set   @sqls='select   count(*)   from   tableName'    
  exec(@sqls)    
   
  --如何将exec执行结果放入变量中?    
   
  declare   @num   int,    
                                @sqls   nvarchar(4000)    
  set   @sqls='select   @a=count(*)   from   tableName   '    
  exec   sp_executesql   @sqls,N'@a   int   output',@num   output    
  select   @num    
  Top

相关问题

  • 可执行的电子书、可执行的FLASH是什么原理
  • SQL数据库执行的原理与过程是什么?
  • exec 执行SQL的问题
  • exec执行的问题,急
  • 求助:在com组件之间聚合的时候,内部组件的委托和非委托接口的实现原理,谁可以解说一下!
  • 高分急请帮我解说一下课题《概念形成原理的研究和实现》----人工智能方向的
  • 拨号上网的执行过程是怎么样的??(用上网卡,电话线,着重原理)
  • 拨号上网的执行过程是怎么样的??(用上网卡,电话线,着重原理)
  • EXEC执行有错( TraToTime between ''' + @begintime+''' and ''' +@ endtime+ ''' )'
  • Runtime.getRuntime().exec(command)强制执行问题

关键词

  • 执行
  • 语句
  • sqls
  • exec
  • executesql
  • fname
  • 常量
  • 字符串
  • filedname
  • 变量

得分解答快速导航

  • 帖主:zhangjian01361
  • lsp69
  • qiqingshizhe
  • wangtiecheng

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo