在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一样?
谢谢你。
您也不能在函数中出现RAISERROR或THROW。听起来您确实想要带输出参数或结果集的存储过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句