周五下午这似乎是个好主意,但我遇到了一些麻烦。我以前没有使用过 SQL XML 查询,所以我可能只是做了一些非常愚蠢的事情。基本上我想传递一系列字符串来将表查询到存储过程中。
我考虑了一会儿,考虑使用 CSV,然后决定尝试使用 XML 来执行此操作。所以我的 XML 看起来像:
<Root>
<string>value</string>
<string>value</string>
<string>value</string>
<string>value</string>
</Root>
我将它作为 XML 值类型传递到存储过程中:
CREATE PROCEDURE usp_UpdateHotelImages
-- Add the parameters for the stored procedure here
@hotelID int,
@imageIDs xml
AS
BEGIN
所以我想将 XML分解成一个字符串表。
我的 SQL 如下所示:
SELECT Child.value('(string)[1]', 'varchar(200)')
FROM @imageIDs.nodes('/Root/') AS N(Child))
但我不断收到错误消息XQuery [nodes()]: Syntax error near '<eof>', expected a "node test".
我很可能在这里做了一些非常愚蠢的事情,所以任何帮助都将不胜感激。
更新
我已将其分解为一个查询以提供帮助:
DECLARE @imageIDs xml
SET @imageIDs = '<Root>
<string>value</string>
<string>value</string>
<string>value</string>
<string>value</string>
</Root>'
SELECT Child.value('(string)[1]', 'varchar(200)')
FROM @imageIDs.nodes('/Root/') AS N(Child)