Я пытаюсь проверить наличие или отсутствие таблицы в базе данных с помощью AssertObjectExists
. На самом деле у меня есть 10 таблиц, чтобы проверить, существуют ли эти таблицы или нет. Поскольку тест - это проверка существования таблиц. Я хочу собраться в одном тесте.Несколько утверждений с использованием tSQLt
Когда я сохраняю все утверждения в одном тесте, если какое-либо из утверждений объекта не выполняется, остальные утверждения не выполняются.
Моя цель - проверить, имеются ли таблицы из набора, например, 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;
Может кто-то перенаправить меня по правому пути.
Edit: Решение Предоставлено Брайаном
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)
новая строка кода. Я просто изменил его за то, что хороший выход консоли
Благодарим за предоставление идеи. Я попробую это и обновит свои комментарии. – vkrams
Perfect ... It Works .. Я обновил код в оригинальном вопросе – vkrams