0
我編寫了以下過程以使用openxml進行批量插入。在我的情況下,表名和列名是動態的,因爲它們將在下面插入之前從.Net應用程序創建。存儲過程已成功運行,但未將任何數據插入表中。使用SQL Server openxml從.Net動態sql進行批量插入
請幫我
感謝advace。
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 '[email protected]+'('[email protected]+')
Select '[email protected]+' From OpenXML(@Idoc,''/NewDataSet/Data'', 2)
With('[email protected]+')';
Print @sql;
Exec @Sql;
Exec sp_xml_removedocument @Idoc;
Commit Transaction
End Try
Begin Catch
RollBack Transaction
End Catch
END
雖然,我已經通過.net代碼本身生成sql來實現上述功能,但我只想知道上述sp有什麼問題。 –
你可以發佈動態生成的插入語句嗎?我會建議比較你的動態sql語句從這裏存在的語句[http://msdn.microsoft.com/en-us/library/aa276847%28v=sql.80%29.aspx],因爲它取決於你的信息想從xml中提取。如果選擇返回肯定會出現反射。 – NeverHopeless