首页 新闻 赞助 找找看

下面的SQL 为撒会打印出000

0
悬赏园豆:10 [待解决问题]

SQL :

BEGIN
    IF 11>2 
    BEGIN
        RAISERROR('生成编号失败1,请确认!',18,0);        
    END
    
    PRINT '000'
    BEGIN TRY
        PRINT 111    
        RAISERROR('生成编号失败2,请确认!',18,0);
        PRINT 222
    END TRY
    
    BEGIN CATCH
        RAISERROR('生成编号失败3,请确认!',18,0);
    END CATCH
END

输出:

000
111
消息 50000,级别 18,状态 0,第 4 行
生成编号失败1,请确认!
消息 50000,级别 18,状态 0,第 15 行
生成编号失败3,请确认!
timy的主页 timy | 初学一级 | 园豆:54
提问于:2018-08-15 18:03
< >
分享
所有回答(2)
0

RAISERROR('生成编号失败1,请确认!',18,0);--生成错误信息1

继续执行PRINT '000'

继续执行PRINT 111

RAISERROR('生成编号失败2,请确认!',18,0);--生成错误信息2,错误严重程度为18(在11-19之间,可以被catch捕获)

catch捕获错误信息2,生成错误信息3,相当于对错误信息2进行了处理

 

RAISERROR在生成错误信息时,不会中断后面sql的执行,所以会输出你看到的结果

Mad_Rabbit | 园豆:307 (菜鸟二级) | 2018-08-15 18:27
0

没有return,当然会继续执行

浅草青晨 | 园豆:904 (小虾三级) | 2018-08-15 18:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册