SQL SERVER函数之深入表值函数的处理分析
程序员文章站
2023-12-06 13:10:16
有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,表值函数返回结果集...
有些情况可能用下表值函数,表值函数主要用于数据计算出来返回结果集,可以带参数(和视图的一个大的区别),如果函数中没有过多的逻辑处理,如变量的定义,判断等,
表值函数返回结果集可以简单向下面这么写:
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())
就忽悠这些了~~~~~~~
表值函数返回结果集可以简单向下面这么写:
复制代码 代码如下:
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())
就忽悠这些了~~~~~~~
上一篇: Unity3D实现模型淡入淡出效果
下一篇: Oracle10g 安装方法