Pic*_*ver 2 t-sql sql-server sql-server-2008
我是 SQL 新手。我正在分析这个计算安全库存的 SQL 函数,我遇到了一些我以前从未见过的东西。
这是一个返回小数的标量函数。但是代码的结尾是这样的:
DECLARE @SafetyStockUnitsCalcNew decimal(14,2)  
RETURN( SELECT 
  STDEV(
     .
     .
     Code for calculating Safety Stock goes here. 
       )
-- Return the result of the function
RETURN @SafetyStockUnitsCalcNew 
结尾
那么返回什么?第一个返回语句还是第二个?第一个也是第二个标量值。此外,一旦@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永远无法到达第二个语句,并且“最后一个语句”规则也不需要它,因此它是无用的。也许最初将SELECT结果分配给变量,然后编码它的人意识到他们可以直接返回SELECT结果。
| 归档时间: | 
 | 
| 查看次数: | 2202 次 | 
| 最近记录: |