簡體   English   中英

將值從XML插入表中(SQL Server)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM