如何在sqlserver中使用存储过程在3个pass整数参数中找到最大值?

cngwdvgl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(510)

我尝试了下面的代码,但无法得到结果。有人能帮我解决以下问题吗:

CREATE PROCEDURE highest_no
    (@a int,
     @b int,
     @c int)
AS 
BEGIN
    DECLARE @highest varchar()

    IF (@a > @b) AND (@a > @c)
    THEN PRINT @a;

    ELSIF (@b > @a) AND (@b > @c)
    THEN PRINT @b;

    ELSE PRINT @c
END

DECLARE @a1 int, @b1 int, @c1 int

SET @a1 = 5
SET @b1 = 4
SET @c1 = 6

EXEC highest_no @a1, @b1, @c1

我试过上面的代码,但我无法得到结果。有没有人能帮我在sqlserver中用存储过程找到3个pass integer参数中的最大值?

qzwqbdag

qzwqbdag1#

最简单的方法是“取消拆分”它们,然后聚合:

CREATE PROC dbo.Highest_Int @a int, @b int, @c int, @highest int OUTPUT AS
BEGIN
    SELECT @highest = MAX(i)
    FROM (VALUES(@a),(@b),(@c))V(i);
END;
GO

DECLARE @h int;

EXEC dbo.Highest_Int 1,2,3, @h OUTPUT;

PRINT @h;

相关问题