Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server函数/Proc求值表达式如果无效,则返回错误_Sql Server - Fatal编程技术网

Sql server SQL Server函数/Proc求值表达式如果无效,则返回错误

Sql server SQL Server函数/Proc求值表达式如果无效,则返回错误,sql-server,Sql Server,我想使用下面的代码,创建一个公共函数来传入一个或多个表达式,并返回我选择的错误 示例代码: IF @Variable1 IS NULL AND @Variable IS NULL or @Variable3 is not null BEGIN -- EITHER DATASET NAME OR ID MUST BE SUPPLIED. SET @_msg = 'There was an error' SET @_returnValue =

我想使用下面的代码,创建一个公共函数来传入一个或多个表达式,并返回我选择的错误

示例代码:

IF @Variable1 IS NULL AND @Variable IS NULL or @Variable3 is not null
    BEGIN

        -- EITHER DATASET NAME OR ID MUST BE SUPPLIED.
        SET @_msg = 'There was an error'
        SET @_returnValue = -1
        GOTO ERROR_HANDLER
    END
ERROR_HANDLER: 

    -- CREATE THE CLOSING MESSAGE.
    IF @_returnValue <> 0
        RAISERROR(@_msg, 18, 2) WITH SETERROR

    RETURN @_returnValue
无论如何,我认为通过这种方式传递动态SQL,我可以做一些事情,可以发送一个完整的表达式,对其进行求值、验证,然后代码继续或停止并出现错误

我想看看社区是否有更好的方法来做到这一点,或者我是否走上了正确的道路


谢谢。

我不太确定你的问题是否正确。但是您可以轻松创建一个过程(如果需要的话)

但我根本不会用这个。我会在发生错误的地方调用RAISERROR(),因为它会在错误日志中为您提供更准确的行号和过程

exec ValidateMultipleConditions @Variable1 + 'IS NULL AND ' + @Variable +   'IS NULL or ' + @Variable3 + ' is not null'
CREATE PROCEDURE dbo.errorout @message nvarchar(100), @sev int, @state int 
AS
BEGIN
    RAISERROR(@message,@sev,@state) WITH NOWAIT
END