Sql server 从XML(SQL Server)向表中插入值

Sql server 从XML(SQL Server)向表中插入值,sql-server,xml,Sql Server,Xml,我有以下XML: <Files> <File> <Name>pic1</Name> <Description>Pics</Description> <URL>URL1</URL> <TypeText>jpg</TypeText> </File> <File> <Name>pic2&l

我有以下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>
但它给了我错误

XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
我想我在
jpath
部分犯了一个错误。是对还是错


Thanx提前

您需要更改select查询:

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]
索引器。

您需要更改select查询:

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]
索引器。

您需要更改select查询:

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]
索引器。

您需要更改select查询:

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]
索引器。

错误是什么?您应该在此处提供错误。@Ivica抱歉,更新后:)错误是什么?您应该在此处提供错误。@Ivica抱歉,更新后:)错误是什么?您应该在此处提供错误。@Ivica抱歉,更新后:)错误是什么?您应该在此处提供错误。@Ivica抱歉,更新后:)