gpt4 book ai didi

sql-server - SQL 函数中的两个 return 语句是什么意思?

转载 作者:行者123 更新时间:2023-12-05 01:45:55 32 4
gpt4 key购买 nike

这个返回小数的标量函数实际上返回了什么代码路径:

DECLARE @SafetyStockUnitsCalcNew decimal(14,2)  
RETURN( SELECT STDEV(
.
.
-- Calculating code here.

)

-- Return the result of the function
RETURN @SafetyStockUnitsCalcNew
END

那么会返回什么?

它是第一个 return scaler 语句还是第二个 scaler 语句?


此外,一旦 @SafetyStockUnitsCalcNew 被声明,它就永远不会被使用,直到它被返回。设置在哪里?

STDEV 中的代码根本没有引用 @SafetyStockUnitsCalcNew

最佳答案

一个函数可以有任意多的 RETURN 语句。

例如下面是三个。

当控制流遇到 return 语句时,函数停止执行并返回值。

CREATE FUNCTION dbo.Foo(@x int)
RETURNS INT
AS
BEGIN
IF @x = 1
RETURN 10;
ELSE
RETURN 18;

RETURN 1/0;
END

SQL Server 不会执行与 C# 中发生的相同级别的分析来检测所有代码路径是否返回一个值并警告您无法访问的代码。它只是坚持最后一条语句必须是 return

在上面的示例中,第三个 RETURN 语句永远无法到达,但是如果没有它,您会看到错误“函数中包含的最后一个语句必须是 return 语句。”。

在您的示例中,永远无法到达第二个 RETURN 语句,并且“最后一个语句”规则也不需要它,因此它是无用的。也许最初 SELECT 将结果分配给变量,然后编码它的人意识到他们可以直接返回 SELECT 结果。

关于sql-server - SQL 函数中的两个 return 语句是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209606/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com