我有一张表,其中由于某些原因行是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