• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL SERVER函数之深入表值函数的处理分析
    有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,
    表值函数返回结果集可以简单向下面这么写:
    复制代码 代码如下:

    CREATE FUNCTION Fun_GetReportNews(@type varchar(10))
    RETURNS TABLE
    AS
    RETURN
    (
      SELECT TPR_ID,TPR_Title,TPR_Date FROM TP_ReportNews WHERE TPR_Type = @type
    )

    调用的时候就 SELECT XX FROM Fun_GetReprotNews('xx')
    如果函数中要定义变量,进行判断计算处理什么的,写法有点不一样了,要定义表变量才行,表值函数里是不允许创建临时表的,只能是表变量。
    举个简单的写法样式,如下:
    复制代码 代码如下:

    CREATE FUNCTION FUN_GetInfoList(@type varchar(10))
    RETURNS @Table TABLE(TPR_ID int,TPR_Title nvarchar(100),TPR_PubDate datetime)
    AS
    BEGIN
      DECLARE @a varchar(10)
      SELECT @a = xx FROM XX WHERE xx = @type
        INSERT @Table SELECT XX,XX,XX FROM TableName WHERE XX = @a --表变量里定义的列数和取值列数要一致
    RETURN
    END

    如果进行多表操作,可以在函数体内定义表变量来存放结果集再进行关联查询。
    标量值函数也贴一个样子好了,老掉牙的了,呵呵~~
    复制代码 代码如下:

    CREATE FUNCTION FUN_DataFormat (@strDate datetime) 
    RETURNS varchar(20)  AS 
    BEGIN

        declare @date varchar(20)
          set @date = DATENAME(YY,@strDate)+'年'+Convert(VARCHAR,MONTH(@strDate))+'月'+Convert(VARCHAR,DAY(@strDate))+'日'
        return @date
    END

    访问标量值函数时一般在函数名前加dbo,不然会被认为是系统内置函数,却因又不是系统内置函数而会报错。
    上面的可以这么测试
    select dbo.FUN_DataFormat(getdate())
    就忽悠这些了~~~~~~~
    上一篇:深入SQL SERVER合并相关操作Union,Except,Intersect的详解
    下一篇:SQLServer:探讨EXEC与sp_executesql的区别详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL SERVER函数之深入表值函数的处理分析 SQL,SERVER,函数,之,深入,表值,