我在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
答案 0 :(得分:1)
添加带有输出参数的OUT
。将代码的倒数第二行更改为 -
EXEC #AgeDifference '27/04/1994',@out OUT
答案 1 :(得分:0)
请使用正确的日期格式执行。它以下线程为我成功。
Declare @out nvarchar(100)
EXEC #AgeDifference '2018-04-27',@out
PRINT @out