【问题标题】:Retrieve count from a sql stored procedure从 sql 存储过程中检索计数
【发布时间】:2014-04-15 11:19:38
【问题描述】:

如果我在下面执行这个 sql 查询,我会得到单个值 26

    SELECT Count(*)

FROM [sqlPractice].[dbo].[vcVisitors]

但是当我使用下面的存储过程时,它有 2 个结果 - 我所追求的数字,然后是一个返回值“0”。我如何获得另一个值并将其输入到标签中?

    SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[UP_SEL_Count]
(
@expectedDate as datetime
)
AS
BEGIN

SELECT Count(*)

FROM [sqlPractice].[dbo].[vcVisitors]
Where expectedDate = @expectedDate and cancelled = 0

END
GO

我用来将数字输入标签的代码如下 - 但它所做的只是显示返回值 (0) - 我如何获得我想要的值?

 int total_visits = Convert.ToInt32(cmd.ExecuteScalar());

  lblTotal_vis_today.Text = total_visits.ToString();

【问题讨论】:

  • 您的存储过程中有一个条件,而您的第一个查询没有。尝试在sql查询窗口中运行,看看结果!
  • 您的第一个示例没有 where 子句,但在存储过程中,您在 where 子句中有 2 个条件。您确定存储过程正常工作吗?直接在 Sql Server 上执行您的存储过程。或者使用 Sql Profiler 跟踪您的查询。
  • 我认为你有一个额外的条件(cancelled = 0),这可能是罪魁祸首!

标签: c# asp.net sql stored-procedures


【解决方案1】:

这是一篇关于如何从存储过程返回值的文章: http://technet.microsoft.com/en-us/library/ms188655.aspx

【讨论】:

    【解决方案2】:

    发送到@expectedDate 的日期值不正确,所以我没有得到我需要的值。现已全部修复 - 感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2019-01-30
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多