openxml を使用して一括挿入を行うには、次の手順を記述しました。私の場合、テーブル名と列名は動的です。これは、以下の挿入の直前に .Net アプリケーションから作成されるためです。ストアド プロシージャは正常に実行されていますが、テーブルにデータを挿入していません。
私を助けてください
よろしくお願いします。
CREATE PROCEDURE [dbo].[BulkUpdate]
@XmlDoc text,
@TableName nvarchar(50),
@ColumnNames nvarchar(4000),
@ColumnDefinition nvarchar(4000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @Idoc int;
Declare @Sql nvarchar(4000);
BEGIN TRANSACTION
Begin Try
Exec sp_xml_preparedocument @Idoc output, @XmlDoc;
Set @Sql = 'Insert into '+@TableName+'('+@ColumnNames+')
Select '+@ColumnNames+' From OpenXML(@Idoc,''/NewDataSet/Data'', 2)
With('+@ColumnDefinition+')';
Print @sql;
Exec @Sql;
Exec sp_xml_removedocument @Idoc;
Commit Transaction
End Try
Begin Catch
RollBack Transaction
End Catch
END