SQL案例捕获和返回错误

SQL案例捕获和返回错误,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在制作一个触发器来为我做一些计算。但是,我只是编写这些命令,看看它们现在是否工作,并产生错误处理。因此,我编写了以下代码 DECLARE @strTotalAssets varchar(8000) SELECT @strTotalAssets = (SELECT ProjectOther2 FROM Project WHERE ProjectID = '00000:') SELECT CASE WHEN RIGHT(value, 1) = '

我正在制作一个触发器来为我做一些计算。但是,我只是编写这些命令,看看它们现在是否工作,并产生错误处理。因此,我编写了以下代码

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, '|')

我的问题是,我不知道如何退出脚本并返回错误。请原谅我的无知,我刚从jr DBA开始。希望从代码中你能看到我在做什么。基本上,如果用户忘记输入一个字母值,该字母值表示数千或数百万的乘数,这意味着该值只返回一个整数,则会产生一个错误,并告诉用户他们忘记输入一个值。

您正在查找GOTO error。我只是快速浏览了一下,但它看起来非常适合您的需要。

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


快速谷歌搜索:由于您显然是朝着这个方向前进的,我想指出,在任何情况下,您都不会编写一个触发器来假设SQl Server中只处理了一行。因此,当您认为一次可能需要处理一个以上记录时,您的代码将无法工作。你需要从数据集的角度来考虑,特别是在触发器中。谢谢,我在做完之后确实考虑到了这一点,我会很快回顾它,并根据你的回答做出回应。不过,我没有编写自己的ifs,而是使用内置的SQL代码,从而消除了很多代码。我能够捕捉到SQL抛出错误的事实,然后才返回错误。
RAISERROR('You forgot to put a mutliplier Value', 15, 121)