【问题标题】:Unable to Run Query, dbo.tablename invalid object name? [closed]无法运行查询,dbo.tablename 无效的对象名称? [关闭]
【发布时间】:2019-08-21 18:44:14
【问题描述】:

我正在尝试构建一个动态查询,该查询将根据数据库中存在的行插入或更新记录,如果是,我将根据@ObjectID 更新一堆记录和子记录。

这是我的查询:

DECLARE @ObjectID BIGINT = 0;
SET @ObjectID = 0;

IF NOT EXISTS (SELECT ID 
               FROM dbo.ResortInfo 
               WHERE dbo.ResortInfo.resortCode = N'PYI')
BEGIN
    INSERT INTO dbo.ResortInfo (columns) 
    VALUES (colvalues)

    SET @ObjectID = SCOPE_IDENTITY()

    PRINT @ObjectID
END
ELSE
BEGIN
    PRINT 'Already exists' -- update query will replace here
END

查询在没有声明部分的情况下运行正常,但是当我添加时

DECLARE @ObjectID BIGINT = 0;
SET @ObjectID = 0;

我收到以下错误:

消息 208,第 16 级,状态 1,第 4 行
无效的对象名称“dbo.ResortInfo”

【问题讨论】:

  • 这通常意味着您实际上没有名为dbo.ResortInfo 的表。
  • 如果你运行select * from dbo.ResortInfo,你应该得到同样的错误
  • 在你的两个 cmets 之后,我再次检查了 SSMS,并且在查询运行器中选择了 db master 现在我觉得自己像个傻瓜
  • 自过去 4 小时以来我一直在讨论这个问题

标签: sql sql-server tsql sql-server-2012 dynamicquery


【解决方案1】:

我会仔细检查您是否选择了正确的数据库。我目前选择了主人,但你的桌子可能住在另一个桌子上。

在您的存储过程中,您可以在顶部添加它以确保您使用的是正确的。

USE [<your db name here>]

【讨论】:

  • 是的,当我使用来自 live db 的新查询按钮时,我没有注意到它,它默认为 master 数据库大声笑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 2011-03-19
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多