我正在尝试使用AssertObjectExists
. 实际上我有 10 个表来检查这些表是否存在。由于测试是验证表的存在。我想放在一个测试中。
当我将所有断言保留在一个测试中时,如果任何对象断言失败,则其余断言不会执行。
我的目标是检查一组说 10 个表中的表是否存在。并报告不存在的表列表。我正在粘贴下面的示例代码。
ALTER PROCEDURE [Test Tracker].[test TablesExists_01]
AS
BEGIN
-- Verify the existance of each table
EXEC tSQLt.AssertObjectExists @ObjectName = 'auth_user',
@Message = 'Unable to find auth_user Table'
EXEC tSQLt.AssertObjectExists @ObjectName = 'auth_permissions',
@Message = 'Unable to find auth_permissions Table'
EXEC tSQLt.AssertObjectExists @ObjectName = 'auth_groups',
@Message = 'Unable to find auth_groups Table'
END;
有人可以将我重定向到正确的路径。
编辑:布赖恩给出的解决方案
IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME = 'auth_user' AND TABLE_SCHEMA = @schema))
SET @errorMessage = @errorMessage + 'Unable to find auth_user' + CHAR(10)
IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME = 'auth_group' AND TABLE_SCHEMA = @schema))
SET @errorMessage = @errorMessage + 'Unable to find auth_group' + CHAR(10)
IF LEN(@errorMessage) = 0
PRINT 'All the Tables in Authentication exists'
ELSE
EXEC tsqlt.Fail @Message = @errorMessage
上面的代码CHAR(10)
是换行代码。我刚刚修改了它以获得一个不错的控制台输出