SQL作业中有这样一个需求
DECLARE @data int
SELECT @data=(SELECT 0)
IF @data=0
RAISERROR ('The data is empty.', 16, 1)
SELECT F1='hello'就是data是根据一条SQL语句得到的结果,如何在发现data=0时抛出异常,终止作业向后执行,上例中就是如何在抛出异常后不再执行后面的代码,有这样的专用SQL指令吗?

解决方案 »

  1.   

    难道没有像高级语言一样的retrun,exit,terminate之类的语句吗,后面可是很长一大篇sql啊,我只是举了个例子而已?
      

  2.   

    create proc pr_test
    asDECLARE @data int 
    SELECT @data=(SELECT 0) 
    IF @data=0 
    begin
       RAISERROR ('The data is empty.', 16, 1) 
       return
    end
    SELECT F1='hello' go-- 作业写
    exec pr_test
      

  3.   

    else也可以的DECLARE @data int 
    SELECT @data=(SELECT 0) 
    IF @data=0 
       RAISERROR ('The data is empty.', 16, 1) 
    else
    begin
        SELECT F1='hello' 
        ....
    end
      

  4.   

     return 语句可以实现从存储过程、批处理、语句块中退出,不再执行后面的语句。
      

  5.   

    可以用return也可以用if @err<>0 goto lbexitlbexit:
    select cast(@err as varbinary(4)) as 错误号
    ,@src as 错误源,@desc as 错误描述
      

  6.   

    谢谢各位,经试 return 的确也可以,不用写在存储过程中,分不多,人很多,见谅了