テーブル値のパラメーターと関数を組み合わせて使用しNOT EXISTS
ます。したがって、アプリケーションからストアドプロシージャにパラメータとして日付を渡すと、ストアドプロシージャは、アプリケーションに挿入されたすべての日付のリストを返します。
最初のステップは、タイプを作成して、日付のリストをプロシージャに渡すことができるようにすることです。
CREATE TYPE dbo.DateListType AS TABLE (Date DATETIME)
次に、プロシージャを作成します。私はあなたの日付テーブルが呼ばれていると仮定しましdbo.Dates
た、あなたは明らかにこれの代わりにあなたのテーブルを使う必要があるでしょう。
CREATE PROCEDURE dbo.InsertDates (@Dates dbo.DateListType READONLY)
AS
BEGIN
DECLARE @Inserted TABLE (Date DATETIME)
INSERT INTO dbo.Dates
OUTPUT inserted.Date INTO @Inserted
SELECT Date
FROM @Dates d
WHERE NOT EXISTS
( SELECT 1
FROM dbo.Dates
WHERE Dates.Date = d.Date
)
SELECT Date
FROM @Inserted
END
アプリケーションが何にコード化されているかわからないため、残念ながら、プロシージャを呼び出すためのコードを提案することはできません。