Я пытаюсь создать функцию в SQL SERVER, которую я могу использовать для сравнения двух таблиц, чтобы проверить, идентичны ли они. Я делаю это с двумя исключениями.Две таблицы в качестве параметров пользовательской функции
Таблицы должны быть точно такими же, с теми же форматами данных и именами столбцов, а также со всеми значениями, одинаковыми в обеих таблицах. Это будет ручная проверка, поэтому, если различия там, брошенная ошибка не является проблемой. Цель состоит в том, чтобы увидеть, приводит ли два подхода к созданию таблиц к тем же таблицам.
Я действительно новичок в функциях в SQL, поэтому я не уверен, как решить проблему. Я хочу передать обе таблицы в качестве параметров функции, чтобы получить что-то вроде этого:
CREATE FUNCTION DIFFERING_ROWS
(@TABLE1, @TABLE2)
RETURNS TABLE
AS
RETURN (
SELECT *, 'A_not_B' as [Difference] FROM @TABLE1
except
SELECT *, 'A_not_B' as [Difference] FROM @TABLE2
union all
SELECT *, 'B_not_A' as [Difference] FROM @TABLE2
except
SELECT *, 'B_not_A' as [Difference] FROM @TABLE1
)
END
Как это сделано правильно? Может ли кто-нибудь мне помочь?
Это собирается быть очень склонны к ошибкам. Если в двух таблицах нет одинаковых столбцов и типов данных, они будут терпеть неудачу. Разумеется, все это в первую очередь зависит от того, чтобы получить это из функции и в динамический sql. –
Если вы, конечно, не пытаетесь использовать параметры таблицы, которые вы могли бы сделать это в функции. Но код, который вы опубликовали, не имеет типа данных, поэтому мы довольно угадываем здесь. –
О да, я сделаю это ясно в вопросе. Таблицы должны быть точно такими же, с теми же форматами данных и именами столбцов. Это будет ручная проверка, поэтому, если различия там, брошенная ошибка не является проблемой. – aldorado