标量函数的定义
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