概述
在SQL Server中系统也自带了许多函数,比如聚合函数count、sum、min等,但有的时候,这些函数并不能满足我们的使用,这个时候我们就得自己定义一个函数
函数和存储过程的区别
存储过程是用户定义的一系列SQL语句的集合,而函数通常是数据库已定义的方法,具体区别如下:
- 对于存储过程来说可以返回参数,而函数只能返回值或者表对象.
- 函数必须有返回值,存储过程可有可无
- 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用.
也就是说,当我们需要返回一个值的时候,我们就可以用到函数。需要返回多个值的时候,就用存储过程
创建函数
建立一表用来做练习例子:
字段名称 | 字段类型 | 字段描述 |
---|---|---|
ID | int | |
Name | nvarchar(50) | |
Sex | bit |
需求:我们在存储用户信息的时候,性别这个字段一般存的都是数字,用1代表男,2代表女。因为数字比汉字占用内存小,查询速度快,所以在存储这些数据的时候,我们一般都会用数字来代替。
但是查询出来的结果我们是要显示男女的,所以下面的例子就是把1和2在查询出结果的时候,转换成对应的男女
自定义函数:
go
create function ConvertToSex(
@sex bit
)
returns varchar(4)
as
begin
declare @rSex varchar(4)
if(@sex=1)
select @rSex='男'
else
select @rSex='女'
return @rSex
end
``
调用函数:
```sql
select *, [dbo].[ConvertToSex](sex) from [dbo].[Customers]
执行结果: