SQL Serverで2つのテーブルを比較して、それらが同一かどうかを確認するための関数を作成しようとしています。私は2つの例外を除いてそれを行います。ユーザー定義関数のパラメータとして2つのテーブル
テーブルのデータフォーマットとカラム名は同じで、両方のテーブルですべての値が同じです。これは手動によるチェックであるため、違いがある場合は、スローされたエラーは問題になりません。目的は、テーブルを作成する2つの方法が同じテーブルにつながるかどうかを確認することです。
私は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
: 私はこのような何かを得るために、関数のパラメータとして両方のテーブルを渡したいですか? 誰かが私を助けることができますか?
。 2つのテーブルがまったく同じ列とデータ型を持たない場合は、失敗します。もちろん、これはまず関数を動的SQLに変換することに依存します。 –
もちろん、テーブル値のパラメータを使用しようとしていない限り、関数内でこれを行うことができます。しかし、あなたが投稿したコードにはデータ型がありませんので、ここでは推測しています。 –
ああ、私は質問でそれを明確にします。テーブルはまったく同じで、同じデータフォーマットとカラム名であると想定されています。これは手動によるチェックであるため、違いがある場合は、スローされたエラーは問題になりません。 – aldorado