IF OBJECT_ID('FUN_MAX')IS NOT NULL  DROP FUNCTION FUN_MAX
GO
CREATE FUNCTION FUN_MAX(@A INT,@B INT,@C INT)
RETURNS INT
AS 
     BEGIN
      DECLARE @MAX INT
      DECLARE @T  TABLE(NUM INT)
      INSERT @T SELECT @A
      INSERT @T SELECT @B 
      INSERT @T SELECT @C
      SELECT @MAX=MAX(NUM) FROM @T
      RETURN @MAX
    END
GO
SELECT DBO.FUN_MAX(8,10,5)
/*            
----------- 
10*/

解决方案 »

  1.   

    我以为用java呢,来错地了 囧
      

  2.   

    SQL server 不支持数组,所以写函数时要注意如果把一组数里的每个数(每个元素)都定义为一个参数,这样的函数没有用的。可以考滤的是,一组数,以特定分隔符拼接,成为字串,作为一个字串值传入函数。或者其它结构。也可以本身就是一个表结构,那当然,就不需要什么函数了。
      

  3.   

     DECLARE @T  TABLE(NUM INT)
          INSERT @T SELECT @A
          INSERT @T SELECT @B 
          INSERT @T SELECT @C
          SELECT @MAX=MAX(NUM) FROM @T这一段不太明白??
    SELECT dbo.FUN_MAX(3,2,5)
    为什么要用  dbo 来点啊??