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

2022-05-24 0 1,227

有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,


表值函数返回结果集可以简单向下面这么写:

复制代码 代码如下:

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())

就忽悠这些了~~~~~~~

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql SQL SERVER函数之深入表值函数的处理分析 https://www.niceym.com/61511.html