【问题标题】:How to resolve invalid object name in Stored procedure script?如何解决存储过程脚本中的无效对象名称?
【发布时间】:2016-09-08 06:28:49
【问题描述】:

我创建了一个存储过程来查询名为EscalationStatus 的表中的所有记录。

但是在 Sql Server 2014 Management Studio 中执行 sql 脚本时,在我声明过程名称的地方会引发错误 -

"Msg 208, Level 16, State 6, Procedure GET_STATUS, Line 19
Invalid object name 'dbo.GET_STATUS'."

我检查了以下过程名称是否与 sql 脚本的名称匹配,并且 DB 名称是有效的。

我还采取了“刷新智能感知缓存”的步骤,但没有清除错误。

问题: 有谁知道为什么程序名称被评估为无效的对象名称

表名是EscalationStatus

`GET_STATUS` stored procedure:

USE [NOTIFICATION]
GO
/****** Object:  StoredProcedure [dbo].[GET_STATUS]    Script Date: 12/05/2016 11:50:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GET_STATUS]
AS 

   BEGIN     

SELECT 
      [EscStatus]
      ,[Color]
  FROM NOTIFICATION.dbo.EscalationStatus

   END

【问题讨论】:

  • SP 真的存在吗? IE。你试过用CREATE替换ALTER吗?
  • 还有什么是 SQL Server 2013?
  • 如果您正在创建一个新的存储过程,那么请使用 CREATE 而不是 ALTER。 (创建过程 [dbo].[GET_STATUS] ...)
  • 您正在尝试更改尚未创建的过程。
  • 替换 CREATE PROCEDURE [dbo].[GET_STATUS] 解决了它..随时发布作为答案。

标签: sql sql-server select stored-procedures


【解决方案1】:

从 Alter 过程脚本中删除以下行,或在上述查询的第一行将其注释掉。:

 `GET_STATUS` stored procedure:

使用这个:

--`GET_STATUS` stored procedure:

USE [NOTIFICATION]
GO
/****** Object:  StoredProcedure [dbo].[GET_STATUS]    Script Date: 12/05/2016 11:50:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GET_STATUS]
AS 

   BEGIN     

SELECT 
      [EscStatus]
      ,[Color]
  FROM NOTIFICATION.dbo.EscalationStatus

   END

【讨论】:

  • GET_STATUS 存储过程:这一行肯定会导致问题。
  • 我可以在这里看到一些连续的downvotes :(我做了不同的smtg,因为你的答案看起来是正确的:) 好吧,你可以添加一些关于createalter 的词。
【解决方案2】:

按照此模板创建/更改过程

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[P1]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[P1]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE proc [dbo].[P1]
AS
BEGIN
  SELECT 1 AS VAL
END

GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多