sqlserver-自定义函数

在sqlserver中有如下几种自定义函数
标量值函数(返回一个确定类型的值)
标量值一看就想到了数学中的标量(只有大小没有方向)和向量(有大小同时有方向),结果我推测对了,哈哈!
表值函数(以表的形式返回值,相当于参数化的视图)
多声明表值函数(标量函数和内联表值函数结合体,返回值是一个表,和标量型函数一样可以用begin…end)
动手实践:
先搞个表

CREATE TABLE [dbo].[test](
	[keyid] [int] IDENTITY(1,1) NOT NULL,
	[sort] [varchar](10) NULL,
	[qty] [int] NULL,
	[aaa] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

放点数据进去
在这里插入图片描述
1,标量值函数

create function F_Get(@@CustomKeyID int)  --@@CustomKeyID 参数
returns varchar(50)    --返回的类型text, 这里是 returns
as
begin
declare @res varchar(50)='';  --申明返回,并初始化

select  @res =[sort]   from test where   [keyid] =@@CustomKeyID  --写好sql

return  @res; 
end

调用
SELECT [dbo].F_Get(5) as [名字] 
 ---调用时候最好写上[dbo],通过数据库对象去调用,不然会报错,找到不这个函数

结果:
在这里插入图片描述
2,表值函数

create  function F_GetTablea(@keyid int)
returns table  --返回table
as
return ( select * from [dbo].[test] where [keyid]=@keyid )    --括弧里面返回一个数据表的查询

select * from dbo.F_GetTablea(5)  --调用

结果:
在这里插入图片描述
3,多声明表值函数

create function F_gettest(@cuseID int)
returns  @cuestable table   --字段需要和原表字段名称类型都相同,
(
[keyid] int,
[sort] varchar(10)
)
as
begin
    
  if (@cuseID%2 =0)
  begin
    insert  into @cuestable select [keyid] ,[sort] from [dbo].[test] where   [keyid]  =1       
  end
  else
  begin
    insert  into @cuestable select [keyid] ,[sort] from [dbo].[test] where   [keyid] =6  
  end 
  
 return  --这个不能删除,一种语法结构
end

结果
在这里插入图片描述
暂时写到这里,欢迎指教!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值