SQL从存储过程获取输出?

时间:2013-04-16 19:22:40

标签: sql return output

刚开始使用SQL,所以这里可能有一个非常简单的答案,但我无法弄清楚我需要从谷歌搜索中做些什么。

我正在使用的数据库中有一个名为dt_char_sp的存储过程 - 简单地说,参数是作为整数的日期和时间,存储过程很好地格式化它们。我希望它的工作原理如下:

EXEC dt_char_sp 20130416, 024356
go

输出:

04/06/2013 02:43:56

除了输出没有发生!我看到有一个变量声明为“@datetime datetime = NULL OUTPUT”,最终@datetime变量填充了格式化的字符串,但我想知道是否有办法获取此输出变量?

4 个答案:

答案 0 :(得分:1)

您需要使用Select statement

在查询结束时,只需选择所需的输出变量,如下所示:

SELECT @datetime

另一种方法是使用Output Parameter。宣布如下:

@datetime DateTime OUTPUT;

答案 1 :(得分:1)

如果没有实际看到存储过程,我们无法确定,但听起来它使用的是输出参数。

DECLARE @retval As DATETIME

EXEC dt_char_sp 20130416, 024356, @datetime=@retval OUTPUT

PRINT @retval
go

从客户端代码中也可以使用相同的方法。

答案 2 :(得分:0)

你确定你正在做一些事情来获得回报价值吗? 如果没有,您可以选择变量

select @datetime

答案 3 :(得分:-1)

请不要为SQL Server带来格式化字符串之类的蹩脚内容。这对于那种事情来说太重要了。我最近看到了很多,这是一个坏习惯。

请使用您的客户端格式化工具...

类似(对于UNIX类型的日期)

DateTime dt = new DateTime("1/1/1970").AddDays(myIntDate);

Console.Writeln(dt.ToString("mm/dd/yyyy"));

这有很多原因 - 性能是最重要的。您已经拥有了所需的所有数据,当您真的不需要任何东西时,没有理由往往非常昂贵的服务器。所有计算机都可以格式化日期,不要使用服务器。

顺便说一句,这是正确的答案。我不认为Stack Overflow应该成为一个地方,如果有人问如何跳下一座桥,我们只是告诉他们。当有人问如何使用错误的方法完成某些事情时,我们应该告诉他们正确的方法。