[英]Insert values into a table from XML (SQL Server)
我有這個XML:
<Files>
<File>
<Name>pic1</Name>
<Description>Pics</Description>
<URL>URL1</URL>
<TypeText>jpg</TypeText>
</File>
<File>
<Name>pic2</Name>
<Description>Pics</Description>
<URL>URL2</URL>
<TypeText>jpg</TypeText>
</File>
<File>
<Name>pic3</Name>
<Description>Pics</Description>
<URL>URL3</URL>
<TypeText>jpg</TypeText>
</File>
</Files>
我想將它們插入SQL Server表中。 我使用以下代碼:
INSERT INTO #T
SELECT
XFiles.value('/Name', 'nvarchar(120)'),
XFiles.value('/Description', 'nvarchar(300)'),
XFiles.value('/URL', 'nvarchar(max)'),
XFiles.value('/TypeText', 'nvarchar(120)')
FROM @FilesXML.nodes('/Files/File')
AS XTbl(XFiles)
但這給了我錯誤。
XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
我想我在jpath
部分犯了一個錯誤。 是對還是錯?
提前感謝
您需要更改選擇查詢:
SELECT
XFiles.value('Name[1]', 'nvarchar(120)') as Name,
XFiles.value('Description[1]', 'nvarchar(300)'),
XFiles.value('URL[1]', 'nvarchar(max)'),
XFiles.value('TypeText[1]', 'nvarchar(120)')
FROM @FilesXML.nodes('/Files/File') as XTbl(XFiles)
例如,如果僅選擇Name
,則該XPath查詢將返回Name
節點的集合-即使只有一個子節點! -因此您看到的錯誤。 您必須確保XPath查詢僅返回單個內容,因此添加了[1]
索引器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.