SQLserver中的自定义函数

在 SQL Server 中,自定义函数(User-Defined Functions,简称 UDF)是一种用户定义的函数,它可以接受参数并返回一个值。自定义函数可以用于执行计算、逻辑判断或返回复杂的数据集。SQL Server 支持两种类型的用户定义函数:

  1. 标量函数(Scalar-Valued Functions):返回单个值。

  2. 表值函数(Table-Valued Functions):返回一个结果集。

创建标量函数

创建标量函数的基本语法如下:

CREATE FUNCTION function_name
([@parameter1 datatype [, @parameter2 datatype] ...])
RETURNS datatype
AS
BEGIN
    -- 函数体
    RETURN @return_variable
END

创建如下函数

CREATE FUNCTION GETTOTALCOUNT(@BSNAME NVARCHAR(20))
RETURNS INT
AS
BEGIN   
DECLARE @TOTALCOUNT INT
SELECT @TOTALCOUNT=COUNT(*) FROM STOCK  WHERE STONAME=@BSNAME
RETURN @TOTALCOUNT
END
GO

使用SELECT DBO.GETTOTALCOUNT('张三')调用函数得到

注意:调用要使用DBO.

创建表值函数

创建表值函数的基本语法如下:

CREATE FUNCTION function_name
([@parameter1 datatype [, @parameter2 datatype] ...])
RETURNS @return_table TABLE (column1 datatype [, column2 datatype] ...)
AS
BEGIN
    -- 函数体
    -- 插入数据到@return_table
    RETURN
END

示例

标量函数示例

以下是一个简单的标量函数示例,它计算两个数字的和:

CREATE FUNCTION AddNumbers
(@num1 INT, @num2 INT)
RETURNS INT
AS
BEGIN
    RETURN @num1 + @num2
END
表值函数示例

以下是一个简单的表值函数示例,它返回一个表,包含两个数字的和与差:

CREATE FUNCTION GetNumbers
(@num1 INT, @num2 INT)
RETURNS TABLE
AS
RETURN
(
    SELECT @num1 + @num2 AS Sum, @num1 - @num2 AS Difference
)

使用自定义函数

创建函数后,你可以在 SQL 查询中像使用内置函数一样使用它们:

-- 使用标量函数
SELECT dbo.AddNumbers(10, 20) AS Result
​
-- 使用表值函数
SELECT * FROM dbo.GetNumbers(10, 20)

注意事项

  • 函数不能修改数据库中的数据,它们是只读的。

  • 函数不能包含控制流语句,如 WAITFORWHILE

  • 函数不能调用会修改数据的存储过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是有点傻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值