zoukankan      html  css  js  c++  java
  • 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之创建标量函数

  • 相关阅读:
    大作文-学以”成人”
    方案类--博物院整改意见
    归纳概括-我国中小学开展研学旅行活动的特点
    短文-网络新一代
    短评
    讲话稿-文明素养教育主题宣传
    检验用户单点登录方案解决
    Spring @Transactional注解
    RPC-局限于java的RMI
    Redis缓存雪崩、击穿、穿透的问题和解决方式
  • 原文地址:https://www.cnblogs.com/WenzhengLi/p/14296423.html
Copyright © 2011-2022 走看看