zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

SQLServer 处理 函数 分析 深入 表值
2023-06-13 09:15:00 时间
有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,
表值函数返回结果集可以简单向下面这么写:
复制代码代码如下:

CREATEFUNCTIONFun_GetReportNews(@typevarchar(10))
RETURNSTABLE
AS
RETURN
(
 SELECTTPR_ID,TPR_Title,TPR_DateFROMTP_ReportNewsWHERETPR_Type=@type
)

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

CREATEFUNCTIONFUN_GetInfoList(@typevarchar(10))
RETURNS@TableTABLE(TPR_IDint,TPR_Titlenvarchar(100),TPR_PubDatedatetime)
AS
BEGIN
 DECLARE@avarchar(10)
 SELECT@a=xxFROMXXWHERExx=@type
   INSERT@TableSELECTXX,XX,XXFROMTableNameWHEREXX=@a--表变量里定义的列数和取值列数要一致
RETURN
END

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

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

访问标量值函数时一般在函数名前加dbo,不然会被认为是系统内置函数,却因又不是系统内置函数而会报错。
上面的可以这么测试
selectdbo.FUN_DataFormat(getdate())
就忽悠这些了~~~~~~~