我有一張表,其中由於某些原因行是XML格式。在SQL Server中使用OpenXML
我必須解析這些行,並從XML本身創建一個新表。
我閱讀並發現在那裏有OpenXML在SQL Server中。我正在使用SQL Server 2016 SP1版本。
我按照有關如何從上面的鏈接使用XML,但說明:成功完成
DECLARE @idoc int, @doc varchar(1000);
指令(S)。
下一個命令:
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>';
爲此,我得到:
消息137,級別15,狀態1,行1870
必須聲明標量變量 「@doc」。
這是奇怪的,因爲我只是在上面的命令中聲明它成功。
現在:
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
消息137,級別15,狀態2,1887年行
必須聲明標量變量 「@idoc」。
任何方式可以解決這個錯誤?
你應該運行所有線路同時 –
@sarslan但在代碼中,行會得到一個正確執行的一個......假設我把所有這在一個函數或存儲過程中......然後......如果我想把所有這些都當作一個過程,你能幫助一下嗎? –
@RajeshRonaldo,正確的行將按照邏輯順序運行,但整個腳本需要首先編譯,你聲明的是一個局部變量,它具有當前批處理的生命期,一個完成它將被「刪除」。 – dbajtr