qq_42848416 2020-09-21 19:01 采纳率: 0%
浏览 77
已采纳

需要入门级dsql自定义函数详解

刚接触sql的自定义函数,看着网上的各种只讲概念不解释例子的教程看的头痛,我希望写个:给函数一个DATA型的日期,根据日期的月份返回“上半年”或“下半年”的字符串。如果可以的话最好有个例子并且详细注释一下这个函数中的所有的单词的含义

  • 写回答

2条回答 默认 最新

  • 猫狸嘎 2020-09-22 09:58
    关注

    因为不知道你说的是什么数据库,目前就仅以sql server 的TSQL的自定义函数方法来举例。根据你的需求,你想要的是返还一个值的函数,在sql server中就属于标量值函数,我理解的语法如下,另外返还一个表的函数的创建语法与下方例子略有不同。

    --================
    -- 创建人:猫狸嘎
    -- 创建时间:2020-09-22
    -- 最后修改人:
    -- 最后修改时间:
    -- 目的:根据输入日期返还其属于上半年还是下半年
    -- ===============                      --上面是函数的基本日志与说明,可写可不写。如果有其他人想要修改该函数,肯定能看到该说明,方便其他人维护。
    CREATE FUNCTION [dbo].[Fun_Get_NV_NF]   --CREATE FUNCTION 表示 创建 函数。dbo.表示创建者,如果不写应该是默认登录数据库的账号为创建者。Fun_Get_NV_NF表示函数名称,函数名称可带_符号,Fun开头是为了在某些场景下方便分辨这个对象是函数,Get_NV表示该函数是用来获取nvarchar值的用途,属于标量函数,最后NF表示年份,代表函数用途。
                                            --函数命名规则是可以遵循自己的命名规则来,不一定要按照我上面所说的方式。但是建议参考这种命名方法,也就是:对象属性_基本用途_返还参数类型_函数用途。
    (@Time as datetime)                     --表示该函数需要一个必须的输入参数@Time,as datetime 表示该参数定义为时间类型。
    RETURNS nvarchar(6)                     --表示该函数会返还nvarchar(6)类型的数据。
    begin                                   --函数对数据开始处理的开始。
    declare @NF nvarchar(6)                 --声明一个变量,基本语法为 declare @XXXXXX  变量类型
    select @NF = case when month(@Time)<=6 then '上半年' else '下半年' end        --给@NF赋值。
    
    return @NF                              --指定该函数最后返还什么值。
    
    end                                     --函数对数据开始处理的结束。
    
    select dbo.Fun_Get_NV_NF('2020-09-22')      --实例1
    select dbo.Fun_Get_NV_NF('2020-06-22')      --实例2
    
    

    最后来看下实例1与实例2的返还结果
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler