SQL函数

复制代码
/*
1标量值函数,简单点来讲就是返回的结果只是一个标量,对于我来讲,返回的结果就是一种类型的一个值。
2内联表值函数 ,内联表值函数返回的是表数据。当然罗,表数据就是Table类型。内联表函数返回的表结构由函数体内的SELECT语句来决定。
3多语句表值函数,多语句表值函数跟内联表值函数都是表值函数,它们返回的结果都是Table类型。多语句表值函数顾名思义,就是可以通过多条语句来创建Table类型的数据。这里不同于内联表值函数,内联表值函数的返回结果是由函数体内的SELECT语句来决定。而多语句表值函数,则是需要指定具体的Table类型的结构。也就是说返回的Table,已经定义好要哪些字段返回。所以它能够支持多条语句的执行来创建Table数据。

自定义函数注意:
1 可以返回表变量
2不能使用output参数;不能用临时表;函数内部的操作不能影响到外部环境;不能通过select返回结果集;不能update,delete,数据库表;
3必须return 一个标量值或表变量
*/

create function [ schema_name. ] function_name 
( [ { @parameter_name [ as ][ type_schema_name. ] parameter_data_type 
    [ = default ] [ readonly ] } 
    [ ,...n ]
  ]
)
returns return_data_type
    [ with <function_option> [ ,...n ] ]
    [ as ]
    begin 
                function_body 
        return scalar_expression
    end
[ ; ]



--新建标量值函数 
create function biaoliangfun( @va1 int=1,@va2 int)
returns int
as
begin
    declare @result int=1
    return @result
end

  
--新建内联表值函数 
create function biaozhifun( @va1 int)
returns table 
as
return 
(
    select id,name from people where age = @va1
)


--新建多语句表值函数 
create function duobiaofun( @va1 int)
returns @result table (id int,name nvarchar(20))
as
begin
    insert into @result(id,name) values(100,'china')
    return 
end


--删除标量值函数 
drop function biaoliangfun
  
--调用表值函数 
select * from biaozhifun(10) 

--调用标量值函数 
declare @zhi int
set @zhi=biaoliangfun(10) 
  
复制代码

 

posted @   唧唧复唧唧木兰当户织  阅读(403)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示