1

ストアド プロシージャへの bulkCopy を使用してから、merge を使用して upsert を使用したいと考えています。

ここに私のストアドプロシージャがあります

@bulkLdapGroup  [TEMP_LDAP_GROUP] readonly

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

merge into [SECURITY_CUBE].[dbo].[LDAP_GROUP] as Target
using @bulkLdapGroup as Source
on Target.[GROUP_NAME]=Source.[GROUP_NAME]
when matched then 
update set Target.[DESCRIPTION]=Source.[DESCRIPTION], Target.[WHEN_CREATED] = Source.[WHEN_CREATED],Target.[UPDATED_DATE]= GetDate()
when not matched then 
insert ([GROUP_NAME],[DESCRIPTION],[WHEN_CREATED],[UPDATED_DATE]) values (Source.[GROUP_NAME],Source.[DESCRIPTION],Source.[WHEN_CREATED],GetDate());


end

bulkCopy を使用してテーブルを渡し、このストアド プロシージャを実行するにはどうすればよいですか? C# コードでは、Datatable をパラメーターとして渡し、このストアド プロシージャを実行します。

4

1 に答える 1

1

テーブル値パラメーター ストア プロシージャを使用し、C# コードを使用して Datatable をストア プロシージャに渡します。


// Create a DataTable 
DataTable dt = new DataTable(...)
// Configure the SqlCommand and SqlParameter.
SqlCommand insertCommand = new SqlCommand(
    "your TVP store procedure", connection);
insertCommand.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = insertCommand.Parameters.AddWithValue(
    "@tvp", dt);
tvpParam.SqlDbType = SqlDbType.Structured;

于 2013-03-19T23:34:49.137 に答える