我有一种情况,我需要对大量类似的数据库运行查询。他们中的大多数人都会有一个表,我需要更新其中的一些行,但其中一些人没有该表。
我想编写一个查询,该查询具有IF
检查表是否存在EXEC sp_executesql
的UPDATE
语句,而无需使用该语句。有没有办法在 SQL Server 中做到这一点?
这是我今天正在做的一个例子:
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[MyTableName]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
-- this is what I want to be able to do but cannot
UPDATE [dbo].[MyTableName] SET [SomeColumn] = NULL WHERE [SomeColumn] NOT IN (1, 2, 3)
-- this is the only way I know to do this without an error
EXEC sp_executesql N'UPDATE [dbo].[MyTableName] SET [SomeColumn] = NULL WHERE [SomeColumn] NOT …
Run Code Online (Sandbox Code Playgroud)