临时程序不给出输出

时间:2018-04-27 06:34:38

标签: sql sql-server stored-procedures

我在SQL Server中创建了一个临时过程,但是当我尝试执行它时,除了输出参数之外它很好。 输出参数无法从SP获得输出。 我不确定为什么会这样。

Alter Procedure #AgeDifference
@DOB date,
@output nvarchar(500) Out
AS
Begin
Declare @tempdate date,@year int,@month int,@day int
Set @tempdate=@DOB

Select @year=DateDiff(Year,@tempdate,Getdate())-
   CASE
    WHEN DatePart(Month,@tempdate)>DatePart(Month,Getdate()) 
    OR ( DatePart(Month,@tempdate)=DatePart(Month,Getdate()) AND 
DatePart(Day,@tempdate)>DatePart(Day,Getdate()))
    THEN 1
    Else 0
   END


Set @tempdate=DateAdd(Year,@year,@tempdate)


Select @month=DateDiff(Month,@tempdate,Getdate())-
   CASE
    WHEN DatePart(Day,@tempdate)>DatePart(Day,Getdate()) 
    THEN 1
    Else 0
   END


Set @tempdate=DateAdd(Month,@month,@tempdate)

Select @day=DateDiff(Day,@tempdate,Getdate())

Set @output= 'The difference is '+CAST(@year as nvarchar(10))+ ' Years '+CAST(@month as nvarchar(10))+ ' Months '
  +CAST(@day as nvarchar(10)) +' Days '

print @output
End


Declare @out nvarchar(100)
EXEC #AgeDifference '27/04/1994',@out
print @out

2 个答案:

答案 0 :(得分:1)

添加带有输出参数的OUT。将代码的倒数第二行更改为 -

EXEC #AgeDifference '27/04/1994',@out OUT

答案 1 :(得分:0)

请使用正确的日期格式执行。它以下线程为我成功。
Declare @out nvarchar(100) EXEC #AgeDifference '2018-04-27',@out PRINT @out