当前位置: 首页 > 面试题库 >

如何在SQL Server中的更新过程中正确使用XML参数

韦胜泫
2023-03-14
问题内容

我对XML相当陌生,正在寻找一种从存储过程下面部分的输入参数中使用XML的方法(使用SQL Server 2012)。XML是通过JS /
Ajax提交的,看起来像这样:

var xmlMain = '<root><title>' + title + '</title><summary>' + summary + '</summary><post>' + post + '</post><departmentID>' + departmentID + '</departmentID></root>';

SQL中的参数定义为:

@xmlMain xml

要从XML中进行选择,请执行以下操作:

SELECT  [Xml_Tab].[Cols].value('(title)[1]', 'nvarchar(100)'),
        [Xml_Tab].[Cols].value('(summary)[1]', 'nvarchar(500)'),
        [Xml_Tab].[Cols].value('(post)[1]', 'nvarchar(max)'),
        [Xml_Tab].[Cols].value('(departmentID)[1]', 'int')
FROM    @xmlMain.nodes('/root') AS [Xml_Tab]([Cols])

我不知道的是如何将以下内容应用于以下内容:

UPDATE  RC_Posts
SET     title = @title,
        summary = @summary,
        post = @post,
        departmentID = @departmentID
WHERE   postID = @postID

问题答案:

尝试像这样更新。

UPDATE A
SET    title = b.title,
       summary = b.summary,
       post = b.post,
       departmentID = b.departmentID
FROM   RC_Posts A
       JOIN (SELECT title=[Xml_Tab].[Cols].value('(title)[1]', 'nvarchar(100)'),
                    summary=[Xml_Tab].[Cols].value('(summary)[1]', 'nvarchar(500)'),
                    post=[Xml_Tab].[Cols].value('(post)[1]', 'nvarchar(max)'),
                    departmentID=[Xml_Tab].[Cols].value('(departmentID)[1]', 'int'),
                    PostID=[Xml_Tab].[Cols].value('(postID)[1]', 'int')
             FROM   @xmlMain.nodes('/root') AS [Xml_Tab]([Cols])) B
         ON a.postID = b.postID


 类似资料:
  • 我已经阅读了尽可能多的关于如何在MongoDB中正确更新数组中的元素的文章(比如这篇:Mongoose,更新对象数组中的值),并认为我已经遵循了所有的建议,但我仍然犯了错误,如果有人能发现我的错误,我将非常感激,因为我已经试着调试了几个小时! 我特别遇到的问题是findOneAndUpdate调用似乎只是更新“inventureItems”数组中的第一个元素,不管它是否匹配我对特定元素的查询。 我

  • 问题内容: 我试图: 根据搜索条件查找文档, 如果找到,请更新一些属性 如果没有插入带有某些属性的文档。 我正在使用,因为我也在执行单个插入操作。我想在一次操作中完成所有操作。 但是,它什么都不会导致为更新/向上插入操作插入任何内容。 这是插入文档: 这是最新资料: 这就是我试图更新/更新的方式: 为什么不更新/更新呢? 注意 那是使用水线ORM的JS代码,它也使用mongodb本机驱动程序。 问

  • 假设的例子 假设如下... 我的LiveData类如下所示: 同样,这不是真的很低效吗,因为它会在recyclerView.adapter中触发完全刷新吗?

  • 问题内容: 我在表的一列中有XML ,并且我需要使用新值而不是0.00更新元素,并且使用两个不同值而不是空白的和元素来更新。 例如: 这是我在专栏中的XML: 这是我尝试过的: 我收到一个错误: 消息9341,级别16,状态1,第4行 XQuery [XYZ.XmlPayload.modify()]:“)”附近的语法错误,应包含步骤表达式 问题答案: 我认为这是一个很好的问题,因为它提出了一个有趣

  • 问题内容: 我有一个xml文件,调用data.xml就像下面的代码。该项目可以从客户端运行,没有问题,它可以读取xml文件。我现在遇到的问题是我想编写一个可以更新开始日期和结束日期的函数。我不知道如何开始。帮助将不胜感激。 我的main.java 问题答案: 首先加载XML文件… 现在,有几种方法可以执行此操作,但简单来说,您可以使用xpath API查找所需的节点并更新其内容 然后保存回文件…

  • 问题内容: 从官方教程中: 在卸载和销毁组件之前立即调用。使用此方法执行任何必要的清除,例如使计时器无效,取消网络请求或清除在其中创建的所有DOM元素。 我了解“使计时器无效”。可以用终止。但是我不理解“清理在中创建的任何DOM元素”,我可以看到这种情况的示例吗? 问题答案: 如果网络请求发送库支持中止正在进行的网络请求调用,则绝对可以在方法中调用该请求。 但是,与清理元素有关。根据目前的经验,我