检查表级对象是否存在的 ISO SQL 方法是 INFORMATION_SCHEMA.TABLES 视图
查看 sys.objects 并没有什么问题,但是.... INFORMATION_SCHEMA.TABLES 更具声明性——而且它是跨平台的(这通常无关紧要,但仍然很好。)
我认为这对于新编码员来说可能更具可读性:
DECLARE @tableName SYSNAME = 'tbfoo'
DECLARE @schemaNAme SYSNAME = 'fooSchema'
IF EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @tableName AND TABLE_SCHEMA = @schemaName )
BEGIN
RAISERROR('%s exists in schema: %s', 0, 1, @tableName, @schemaName)
END
ELSE
BEGIN
RAISERROR('%s DOES NOT EXIST in schema: %s', 0, 1, @tableName, @schemaName)
END
不要担心 RAISERROR 命令——它只是打印格式化消息的好方法。
您可以查询 INFORMATION_SCHEMA 视图以了解其中的内容。
SELECT TOP 5 * FROM INFORMATION_SCHEMA.TABLES
如您所见——您可以按名称引用模式和目录,而不是使用 OBJECT_ID() 查找它们的 ID