错误“if,then,else附近的语法不正确”请更正

时间:2014-10-09 11:14:25

标签: sql sql-server-2008

我正在创建一个计算兴趣的函数。 dbo.days1()是一个没有天数的函数

CREATE FUNCTION dbo.int1
    (

    )

RETURNS int
as
begin
declare @days int

set @days = dbo.days1()
if @days > 0 
then
return( select((((dbo.delivery.roi * dbo.delivery.adv1)/100)/365)*@days)from delivery)
    else
    return (0)
     end if      
    END

它给了我语法错误,如果那么接近和否则要改正

3 个答案:

答案 0 :(得分:1)

SQL then声明中没有end ifif..else部分 参考MSDN

您可以将整个函数重写为一行以排除if和任何其他变量,这使得它更难阅读:

create function dbo.int1 ()
  returns int
as
begin
  declare @days      int = dbo.days1(),
          @returnInt int = 0

  if @days > 0
  begin
    set @returnInt = (isnull((select((((dbo.delivery.roi * dbo.delivery.adv1)/100)/365)*dbo.days1())from delivery), 0))
  end

    return (@returnInt)
end 

答案 1 :(得分:0)

为什么你不能尝试下面的

    CREATE FUNCTION dbo.int1
    (

    )
    RETURNS int
    as
    begin
    declare @days int
    set @days = dbo.days1()
    if @days > 0 
    begin
        return( select((((dbo.delivery.roi * dbo.delivery.adv1)/100)/365)*@days)from delivery)
    end

    return (0)       
    end

答案 2 :(得分:0)

尝试这个

CREATE FUNCTION dbo.int1
    (

    )

RETURNS int
as
begin
declare @days int

set @days = dbo.days1()
if @days > 0 
 Begin
  return(select((((dbo.delivery.roi * dbo.delivery.adv1)/100)/365)*@days)from delivery)
 End

else
 Begin
   return (0)
 End

END