Я использую TSQLT AssertResultSetsHaveSameMetaData для сравнения метаданных между двумя таблицами. Но проблема в том, что я не могу жестко закодировать имя таблицы, так как я передаю имя таблицы в качестве параметра во время выполнения. Есть ли способ сделать это
AssertResultSetsHaveSameMetaData в TSQLT
Ответы (1)
Вы используете tSQLt.AssertResultSetsHaveSameMetaData
, передавая два оператора select следующим образом:
exec tSQLt.AssertResultSetsHaveSameMetaData
'SELECT TOP 1 * FROM mySchema.ThisTable;'
, 'SELECT TOP 1 * FROM mySchema.ThatTable;';
Таким образом, должно быть довольно легко параметризовать имена сравниваемых таблиц и строить операторы SELECT на основе этих параметров имени таблицы.
Однако, если вы используете последнюю версию tSQLt, теперь вы также можете использовать tSQLt.AssertEqualsTableSchema
, чтобы сделать то же самое. Вы бы использовали это утверждение следующим образом:
exec tSQLt.AssertEqualsTableSchema
'mySchema.ThisTable'
, 'mySchema.ThatTable';
Опять же, параметризация имен таблиц будет несложной, поскольку они передаются в AssertEqualsTableSchema
в качестве параметров.
Если вы объясните вариант использования/контекст и предоставите пример кода, чтобы объяснить, что вы пытаетесь сделать, у вас больше шансов получить необходимую помощь.