使用此代码:

ALTER PROCEDURE [dbo].[get](@i int)
AS
BEGIN
    declare @ADate datetime
    select @ADate = ADate
    from table
    where i=@i
    and DateDiff(day ,getDate(), aDate  ) > 0
    and aDate is not null
    order by aDate asc
    return select @ADAte
END

这将返回 0(或系统 0 日期时间,这不是数据库的预期结果)。

执行代码
Declare @res datetime

exec @res = get 3

print @res

为什么?

最佳答案

SQL Server 中的存储过程只能返回整数。如果您需要返回单个整数以外的任何内容,那么您应该使用以下方法之一(前面的答案解释了一些):

  • 在您的过程中使用 SELECT
  • 使用输出参数
  • 使用用户定义的函数代替
  • 关于sql-server - 存储过程返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4489137/

    10-11 01:21