SQL CASE捕获和返回错误

时间:2011-05-05 18:31:20

标签: sql sql-server tsql

我正在构建一个触发器来为我做一些计算。但是,我只是编写命令以查看它们是否正常工作并产生错误处理。所以我写了下面的代码。

DECLARE @strTotalAssets varchar(8000)

SELECT @strTotalAssets = (SELECT ProjectOther2 FROM
            Project WHERE ProjectID = '00000:')

SELECT 
    CASE
      WHEN RIGHT(value, 1) = 'M' THEN LEFT(value, (LEN(value)-1)) * 1000000
      WHEN RIGHT(value, 1) = 'T' THEN LEFT(value, (LEN(value)-1)) * 1000
      WHEN RIGHT(value, 1) > 0 THEN RETURN 'Error: You forgot to put a mutliplier Value'
      ELSE 'Error'
    END
FROM Split(@strTotalAssets, '|')

我遇到的问题是我不知道如何退出脚本并返回错误。原谅我的无知,但刚刚开始在JA DBA。希望从代码中你可以看到我想要做的事情。基本上,如果用户忘记放置一个字母值,该值表示数千或百万的乘数,这意味着该值只返回一个整数,然后产生错误并告诉用户他们忘记放置一个值。

2 个答案:

答案 0 :(得分:2)

由于这是一个触发器,真正意义上的返回数据不是一个选项;对于以与发生密钥违规错误相同的方式处理的内容并以相同的方式返回给客户端,您可以RAISERROR

RAISERROR('You forgot to put a mutliplier Value', 15, 121) 

答案 1 :(得分:0)

您正在寻找GOTO错误。 Here's a quick primer。我只是快速浏览它,但它看起来非常适合你需要的东西。