SQL server 自定义函数FUNCTION的使用

一.标量值函数、内联表值函数、多语句表值函数举例说明

1、标量值函数(返回一个标量值)

CREATE FUNCTION dbo.func_date_get_name(@date_into varchar(8)) 
--CREATE FUNCTION 函数名称(@参数名 参数的数据类型)
RETURNS varchar(20) --返回返回值的数据类型
--[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密
as
BEGIN
declare @result_name varchar(20)
select @result_name = Value_name from test_ceshi where statdate = @date_into 
RETURN @result_name
END

--select dbo.func_date_get_name('20180808') name;
--select * from test_ceshi;

 

2、内联表格值函数定义格式:

特点:内联表格值函数支持在WHERE子句中使用参数

CREATE FUNCTION dbo.func_date_get_table(@date_into varchar(8)) 

RETURNS table
--[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密
as
RETURN select statdate,Value_name from test_ceshi where statdate = @date_into

--select * from dbo.func_date_get_table('20180808') ;

 

 3、多语句表值函数定义格式:

多语句表值函数跟内联表值函数都是表值函数,它们返回的结果都是Table类型。多语句表值函数通过多条语句来创建Table类型的数据。这里不同于内联表值函数,内联表值函数的返回结果是由函数体内的SELECT语句来决定。而多语句表值函数,则是需要指定具体的Table类型的结构。也就是说返回的Table已经定义好要哪些字段返回。所以它能够支持多条语句的执行来创建Table数据。

CREATE FUNCTION dbo.func_date_get_table_test(@date_into varchar(8)) 
RETURNS @table_test table(date varchar(8),ID varchar(20),name varchar(20))
--[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密
as
begin
insert @table_test select statdate,value_id,Value_name from test_ceshi where statdate = @date_into
RETURN 
end

--select * from dbo.func_date_get_table_test(20180808);

 

 

 二、修改和删除自定义函数

1、使用alter语句修改自定义函数:

alter function 函数名(参数)
returns table
as
return(一条SQL语句)

2、使用drop语句删除:

drop function func_date_get_name

 

原文链接:https://blog.csdn.net/lanxingbudui/article/details/81736402

posted @ 2021-11-16 15:31  ~且听风吟~  阅读(585)  评论(0编辑  收藏  举报