SQL SERVER 标量函数

标量函数的定义

SQL Server标量函数接受一个或多个参数并返回单个值。

标量函数可帮助简化代码。 例如,可能有许多查询中出现的复杂计算。可以创建一个标量函数来封装公式并在查询中使用它,而不是在每个查询中包含公式。

平时使用的场景

在一个功能中,根据业务去写存储过程中的算法。存储过程的调用时会出现,返回值不明确的情况。

为避免此情况,可使用统一的标量函数值,将返回值进行编程规范

如:抽奖活动,返回值为-1为已抽奖,或者返回值为-1为不满足条件

标量函数的使用

创建

USE [XXXDB]
GO
/****** Object:  UserDefinedFunction [dbo].[ReturnState_OtherStatus]    Script Date: 2021/1/19 9:41:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<lwz>
-- Create date: <Create Date, ,>
-- Description:	<返回结果的其他状态,超过次数等>
-- =============================================
CREATE FUNCTION [dbo].[ReturnState_OtherStatus]
(

)
RETURNS SMALLINT
AS
BEGIN
	
	RETURN -1;

END

存储过程调用

USE [OldSoldierComeBackDB]
GO
/****** Object:  StoredProcedure [dbo].[IsReceiveComeBackPacket]    Script Date: 2021/1/19 9:45:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		zhuchunfeng
-- Create date: 2016-06-21
-- Description: 是老玩家 检查有没有领取过老玩家礼包    
-- =============================================
ALTER PROCEDURE [dbo].[IsReceiveComeBackPacket]
    @AvatarID BIGINT ,
    @GameArea INT
AS
    BEGIN
        SET NOCOUNT ON;
        -- Type 1 2 3 
        -- 有没有领取过
        IF EXISTS ( SELECT  1
                    FROM    dbo.XXXDB
                    WHERE   AvatarID = @AvatarID
                            AND GameArea = @GameArea 
                            AND Type=0 )
            RETURN dbo.ReturnState_OtherStatus();

        RETURN dbo.ReturnState_Succeed();
        SET NOCOUNT OFF;
    END

参考链接

SQL Server标量函数

SQLServer之创建标量函数

posted @ 2021-01-19 10:00  温暖而不炙热  阅读(744)  评论(0编辑  收藏  举报