CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

一个会则不难的问题,请各位高人指导一下!

楼主sasacat(傻傻猫)2003-09-02 20:32:40 在 MS-SQL Server / 基础类 提问

如果我写了一大堆各式各样的零散的SQL语句在查询分析器里,然后点一下PLAY一起执行  
   
  什么样的语句执行错误情况下就会终止不再执行下面的语句  
   
  什么样的语句执行错误情况下还会继续执行下面的语句?  
   
  最好有例子说明一下,要不纯理论也可以、、、千万不要“我觉得、、我以为、、我猜、、、”呵呵 问题点数:100、回复次数:10Top

1 楼pengdali()回复于 2003-09-02 20:37:37 得分 10

http://expert.csdn.net/Expert/TopicView1.asp?id=1675986Top

2 楼txlicenhe(马可)回复于 2003-09-02 20:38:59 得分 10

1:  
  if   @@error   <>   0    
                Return  
  2:  
  普通的语句出错也会继续往下执行。  
  Top

3 楼j9988(j9988)回复于 2003-09-02 20:39:24 得分 10

我觉得、、我以为、、我猜、、、我估计....也许说不定可以:  
  select   *   from   t1  
   
  if   @@error>0  
  return  
   
  select   *   from   t2Top

4 楼zjcxc(邹建)回复于 2003-09-02 20:46:11 得分 20

什么样的语句执行错误情况下就会终止不再执行下面的语句  
   
  答:出错的情况下不会执行下面的语句.  
  例如:  
  select   *   from   aa     --如果表aa不存在,则不会执行下面的这句,否则会执行  
  select   *   from   bb  
   
   
   
  什么样的语句执行错误情况下还会继续执行下面的语句?  
   
  答:进行了错误处理,或错误不严重的情况下会执行下面的语句  
  例如:  
  exec('select   *   from   ab')  
  if   @@error<>0   print   'err'  
  print   '虽然出错了,但也会继续'  
   
   
   
   
   
  Top

5 楼saucer(思归)回复于 2003-09-02 21:11:18 得分 10

if   your   statements   in   the   查询分析器   contain   GO   blocks,   if   there   is   an   error   in   one   of   the   blocks,   it   will   skip   the   statements   in   the   remaining   block   and   go   on   to   execute   the   next   blockTop

6 楼BenZ004(仲陵)回复于 2003-09-02 21:37:29 得分 10

什么样的语句执行错误情况下就会终止不再执行下面的语句  
   
  :一般情况下出错了,如表不存在,命令有问题等等,就不会执行下面的语句  
  如:select   *   from   aa;---//aa表是不存在的  
  那么下面的就不会执行  
  select   *   from   orders;  
   
   
  什么样的语句执行错误情况下还会继续执行下面的语句?  
   
  :而如果你在每一个执行SQL语句块加了go的话  
  如:select   *   from   aa;---//aa表是不存在的  
  go  
  那么下面的语句还是会执行的,只不过执行后再报错  
  select   *   from   orders;  
  goTop

7 楼pengdali()回复于 2003-09-02 21:40:09 得分 10

不!上面的太片面,其实还有很多错误都会导致异常中止,而不继续执行。Top

8 楼sasacat(傻傻猫)回复于 2003-09-03 23:38:40 得分 0

大力、、、你这个“其实还有很多错误”也举个例子出来嘛、、、  
   
  分明是在吊人胃口、、Top

9 楼pengdali()回复于 2003-09-03 23:54:25 得分 10

我列举不完的。  
   
   
  exec('select   1*''sd''')  
  print   1  
   
   
  -------------------------  
   
  select   1*'sd'  
  print   1  
   
  ----------------------  
  select   cast(9*90000   as   tinyint)  
  print   1  
   
  --------------------  
  exec('select   *   from   sdfs.pubs..jobs')  
  print   1Top

10 楼CSDNM(决定不当CSDN经理了)回复于 2003-09-04 08:53:18 得分 10

大力说的对,列举不完,应该可以归类:  
  1、语法检查不过关,不执行当前块的下面语句,如  
  select   *   frm   aa  
  if   @@error<>0    
        print   1  
  else  
        print   0  
   
  2、对象不存在,不执行当前块的下面语句,如  
  select   *   from   aa         --aa不存在  
  if   @@error<>0    
        print   1  
  else  
        print   0  
   
  3、需要注意的是,动态SQL隐藏了语法错误,如  
  EXEC('select   *   from   aa')  
  if   @@error<>0    
        print   1  
  else  
        print   0  
  会执行到print   1  
  而  
  select   *   from   aa  
  if   @@error<>0    
        print   1  
  else  
        print   0  
  不会执行到  
   
  4、GO   blocks永远是有效的,出错只可能终止当前块的执行,对下一个块是没有影响的  
   
   
  至少可以归纳出以下结果:  
  未真正执行语句的错误(在真正执行前发现的错误),不执行当前块的下面语句,如词法分析错误、语法分析错误  
   
   
  Top

相关问题

  • hehe,有点钱,想买个手机,各位指导一下先!!!!!
  • 各位前辈,指导一下小弟吧!
  • 请各位编程高手来指导一下。
  • 请各位指导一下使用weblogic6.1的要点.
  • 关于RMI的连接的一个问题,请各位高手指导一下
  • 请教一个正而表达式。请各位高手指导一下。
  • 指导一下阿!!
  • 各位上仙, 我要学winsock了, 指导一下, 从何处着手? 我现在是winsock盲.
  • 请各位搞VxWorks 的高手指导一下菜鸟!一定进来看看!谢谢!
  • 下午要去面试,希望各位用java的大哥们指导一下,好吗?拜托

关键词

  • 语句
  • 执行
  • 语法
  • 错误
  • 出错
  • aa
  • print
  • 终止
  • 情况
  • 当前块

得分解答快速导航

  • 帖主:sasacat
  • pengdali
  • txlicenhe
  • j9988
  • zjcxc
  • saucer
  • BenZ004
  • pengdali
  • pengdali
  • CSDNM

相关链接

  • SQL Server类图书

广告也精彩

反馈

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