首页 > 解决方案 > 忽略不存在表的插入语句并运行下一条语句

问题描述

我有这样的查询

INSERT NonExistingTableName(...) VALUES (...); SELECT 1;

我不能在 VALUES 之前插入任何东西,所以我得到了Invalid object name 'NonExistingTableName'.

有没有办法不打印错误而只做下一条语句?

标签: sqlsql-server

解决方案


不是以简单的方式。问题是在脚本的编译阶段捕获了不存在的表。如果没有编译,则没有任何运行。

一种选择——如果你必须有这样的代码——是动态 SQL:

BEGIN TRY
    EXEC sp_executesql 'INSERT NonExistingTableName(...) VALUES (...)';
END TRY
BEGIN CATCH
END CATCH;

SELECT 1;

您需要动态 SQL 和/TRYCATCH来绕过错误。


推荐阅读