SQL Exit标量函数过早

瓦济姆·萨维诺克(Vadzim Savenok)

在SQL中,可以使用RETURN语句过早退出存储过程。

-- CHECK IF IT IS A VALID AND EXISTING JOB NAME
IF NOT EXISTS (SELECT * FROM msdb..sysjobs WHERE name = @job_name)
BEGIN
    RAISERROR ('[ERROR]:[%s] job does not exist. Please check',16, 1, @job_name) WITH LOG
    RETURN
END

但是,当我尝试将相同的原理应用于标量函数时,由于函数需要返回某些内容,因此它将返回错误。

CREATE FUNCTION [dbo].[fn_GetJobStatus]
    (@job_name SYSNAME)
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
    DECLARE @JobCompletionStatus INT;

    -- CHECK IF IT IS A VALID AND EXISTING JOB NAME
    IF NOT EXISTS (SELECT * FROM msdb..sysjobs WHERE name = @job_name)
    BEGIN
        RAISERROR ('[ERROR]:[%s] job does not exist. Please check',16, 1, @job_name) WITH LOG
        RETURN   <--ERROR HERE
    END
    
    <!--Scalar function logic here -->

    RETURN @JobCompletionStatus;
END

我如何过早退出标量函数,就像在存储过程中使用RETURN一样?

谢谢你。

David Browne-微软

您也不能在函数中出现RAISERROR或THROW。听起来您确实想要带输出参数或结果集的存储过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Exit标量函数过早

来自分类Dev

SQL Exit标量函数过早

来自分类Dev

SQL Exit标量函数过早

来自分类Dev

SQL更新标量函数

来自分类Dev

构造函数过早泄漏

来自分类Dev

过程或函数的参数过多SQL Server

来自分类Dev

SQL标量函数返回意外结果

来自分类Dev

SQL中的用户定义的标量函数

来自分类Dev

从Linq查询中调用SQL标量函数

来自分类Dev

SQL标量函数返回意外结果

来自分类Dev

检索PHP中标量sql函数的结果

来自分类Dev

在SQL查询中使用MAX函数过滤数据

来自分类Dev

SQL Server:带表参数过滤的用户定义函数

来自分类Dev

根据标量函数结果过滤SQL查询

来自分类Dev

如何在SQL Server 2008中调用标量函数

来自分类Dev

SQL标量函数值转换为Power Bi表

来自分类Dev

从SQL中的标量函数返回2列值

来自分类Dev

如何使用C#从SQL标量函数检索值

来自分类Dev

标量用户定义函数中T-Sql查询的性能

来自分类Dev

标量函数中的T-SQL未解析引用

来自分类Dev

SQL Server性能问题:为什么简单的SQL语句和UD标量值函数显得昂贵

来自分类Dev

如何编写一个SQL Server标量函数来计算总和?

来自分类Dev

SQL错误:将表参数传递给表值函数时,“必须声明标量变量”

来自分类Dev

SQL Server 2019打破Base64编码作为标量值函数

来自分类Dev

如何在EF6原始sql函数中传递标量参数?

来自分类Dev

SQL Server 2019打破Base64编码作为标量值函数

来自分类Dev

如何将标量转换为内联函数sql server 2008

来自分类Dev

如何编写一个SQL Server标量函数来计算总和?

来自分类Dev

SQL错误:将表参数传递给表值函数时,“必须声明标量变量”