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())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值