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之创建标量函数

  • 相关阅读:
    java中a++和++a的区别详解
    Oracle 对比两张表不一样 的数据
    通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明
    Java语言基础-运算符
    java中+=详解 a+=b和a=a+b的区别
    java语言基础-变量
    java语言基础-进制
    Spring整合CXF发布及调用WebService
    Oracle Job定时任务的使用详解
    MySQL的主从配置
  • 原文地址:https://www.cnblogs.com/WenzhengLi/p/14296423.html
Copyright © 2011-2022 走看看