mssql sqlserver 自定义函数知识分享


摘要:
用户自定义函数可以同db内置函数一样,具有相同的功能,可以返回标量值和返回表值,
下文将着重讲述两种自定义的写法和用法。



sql自定义函数注意事项:
函数中含有的 SELECT 语句无法向客户端返回数据。
函数中最后一条语句必须是返回语句。

————————————-
自定义函数分类:
1 标量函数:返回一个标量值
2 表值函数:返回一个表格函数(行集数据)
————————————
标志函数和标量函数的区别在于,
一个是返回单个值,
一个是返回数据表多行集合数据。
————————————

一、标量函数

标量函数的语法简介:
create function 函数名(函数参数)
return 返回数据类型
[with encryption]
as
begin
sql语句
(函数结尾必须有return 返回值)
end
———————————–
例:

 /*创建标量自定义函数*/
create function fn_test (@a varchar(10))  
returns varchar(20)
as 
begin
  declare @b varchar(100)
  set @b =@a+'测试自定义函数' 
  return @b
end

go

/*执行自定义函数*/
select dbo.fn_test('maomao365.com')
  
go
/*删除自定义函数*/ 
drop function fn_test
mssql_sqlserver_自定义标量函数

mssql_sqlserver_自定义标量函数



二、表量函数

表量函数语法如下:
create function 函数名(函数参数)
return 临时表变量 table(表结构)
[with encryption]
as
begin
sql语句 –生成表变量数据

return;
end
————————————
例:

  /*创建表值自定义函数*/
create function fn_test (@a varchar(60))  
returns  @t table(name varchar(60))
as 
begin 
insert into @t(name)values(@a)
 return 
end
go
/*执行自定义函数*/
select * from  dbo.fn_test('maomao365.com')
  
go
/*删除自定义函数*/ 
drop function fn_test
mssql_sqlserver_自定义表值函数

mssql_sqlserver_自定义表值函数