【问题标题】:I am trying to get all the SQL caseID between two datetimes我正在尝试获取两个日期时间之间的所有 SQL caseID
【发布时间】:2016-06-07 17:29:59
【问题描述】:

我正在 ASP.NET 中构建一个 Web 服务,它将调用一个存储过程来获取两个日期之间的所有案例。我正在使用 SQL Management Studio 这是我的代码:

ALTER PROCEDURE spGetNewCases 
   (@startDate datetime, @endDate datetime)
AS
BEGIN 
    SELECT 
       caseID
    FROM
       tblCases
    WHERE
       dateOpened BETWEEN @startDate and @endDate
END
GO
EXEC spGetNewCases 

但是,我收到以下错误:

“找不到对象 spGetNewCases”。

在 IDE 中,单词“between”和“and”以浅灰色而不是深蓝色突出显示。此外,我想用两个日期来测试它,比如 2015-01-01 和 2015-01-04。

我的 SQL 服务器中日期时间的格式是 datetime2((0),null)。例如

 2015-01-02 00:00:00.

非常感谢社区的反馈。谢谢!

编辑:

感谢大家的大力帮助!这是我的新代码!

-- procedure
USE [vetDatabase_Wizard]
GO
ALTER PROCEDURE sp_GetNewCases (@startDate datetime, @endDate datetime)
AS
BEGIN 
    SELECT caseID FROM tblCases
    WHERE dateOpened BETWEEN @startDate and @endDate
END
GO
EXEC sp_GetNewCases '2015-01-01', '2015-04-04'

【问题讨论】:

  • 您创建了程序了吗?我认为您无法更改尚不存在的程序。

标签: sql asp.net stored-procedures


【解决方案1】:

检查你的数据库

USE CASE_DB
GO

限定您的架构名称。

ALTER PROCEDURE schema.spGetNewCases ...

看看是不是找不到...

编辑

如果您使用的是 SSMS - 右键单击​​您的存储过程并选择“修改”。这将为您提供一个预先编写的 ALTER 模板,然后您可以对其进行修改。

【讨论】:

  • 另外,EXEC spGetNewCases 是一个不包含参数的调用。 EXEC dbo.spGetNewCases '2015-01-01', '2015-01-04'
  • @JohnLBevan -- 好点 -- 但我认为这种情况下的错误信息是不同的 -- Procedure or function 'spGetNewCases' expexts parameter '@startdate', which was not supplied.(或附近)
【解决方案2】:

如果您的 SP 已创建,请检查您的数据库上下文。在 SSMS 中有一个下拉菜单,您也可以使用 DBNAME。在 ASP 代码中,它位于您的连接字符串中。

如果未创建,则需要先创建过程,然后才能更改过程。

您可以像这样调用 SP:EXEC spGetNewCases '2016-03-01', '2016-05-01'

旁注:系统存储过程使用 sp 前缀,您可能应该选择不同的东西,例如 sp_ 或 usp。

【讨论】:

    猜你喜欢
    • 2017-06-12
    • 1970-01-01
    • 2023-03-25
    • 2021-06-01
    • 2014-06-11
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多