• SQL SERVER函数——表值函数的处理


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

    1 CREATE FUNCTION Fun_GetReportNews(@type varchar(10))
    2 RETURNS TABLE
    3 AS 
    4 RETURN
    5 (
    6   SELECT TPR_ID,TPR_Title,TPR_Date FROM TP_ReportNews WHERE TPR_Type = @type
    7 )

                  调用的时候就 SELECT XX FROM Fun_GetReprotNews('xx')

    如果函数中要定义变量,进行判断计算处理什么的,写法有点不一样了,要定义表变量才行,表值函数里是不允许创建临时表的,只能是表变量。
    举个简单的写法样式,如下:

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

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

    1 CREATE FUNCTION FUN_DataFormat (@strDate datetime)  
    2 RETURNS varchar(20)  AS  
    3 BEGIN 
    4     
    5     declare @date varchar(20)
    6       set @date = DATENAME(YY,@strDate)+''+Convert(VARCHAR,MONTH(@strDate))+''+Convert(VARCHAR,DAY(@strDate))+''
    7     return @date
    8 END
               访问标量值函数时一般在函数名前加dbo,不然会被认为是系统内置函数,却因又不是系统内置函数而会报错。
       上面的可以这么测试 
         select dbo.FUN_DataFormat(getdate())
     就忽悠这些了~~~~~~~
                     表变量和临时表的区别及函数和存储过程的区别,大伙可以在博客园上博一把,有很多说明文章比较详细的了。

  • 相关阅读:
    JSX
    打包相关
    SpringMVC:数据绑定入门(-)
    转:String,StringBuffer与StringBuilder的区别??
    Spring,@Controller,@RequestMapping, @ResponseBody,@RequestParam
    spring:org.springframework.web.servlet.DispatcherServlet noHandlerFound解决方法
    IDEA: 遇到问题Error during artifact deployment. See server log for details解决方法
    【Quick-Cocos2d-x笔记】【一】Mac环境及相关配置
    Cocos2dx学习之---TableView实现二级菜单
    Cocos2dx学习之---使用Sqlite3的笔记
  • 原文地址:https://www.cnblogs.com/linjulin/p/5690887.html
Copyright © 2020-2023  润新知