【发布时间】: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