SqlServer简单的操作XML,已经输入参数的注意问题

狂风中的少年 提交于 2019-12-03 15:40:58

SqlServer简单的操作XML,已经输入参数的注意问题:

 

ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money]
    @Create_By VARCHAR(50),
    @xmlStr1 NVARCHAR(MAX)  -写在这里面的为 传入的参数
AS
BEGIN  as begin后面的为自定义的变量
    SET NOCOUNT ON;
    DECLARE @xml XML = @xmlStr1;

sqlserver操作XML

     T-SQL提供了以下几个针对XML类型的查询函数:
      query(XQuery):利用Xquery查询符合条件的元素集合。
      value(XQuery,Type):利用Xquery查询具体元素的值,Type定义值的类型。
      exist(XQuery):利用Xquery查询是否存在符合条件的元素。
      nodes(XQuery):利用Xquery获得一个结果集。



INSERT INTO qqtest(xmlinfo) xmlinfo 为字符串类型
VALUES(
N'<root>
<person>
<id>F001</id>
<name>F001</name>
<age>18</age>
</person>
</root>'
)


DECLARE @errorCode INT;
DECLARE @errorMsg VARCHAR(2000);
BEGIN TRY
    SET @errorCode = 0;
    SET @errorMsg = '';
    DECLARE @xml XML;
    SELECT @xml = xmlinfo
    FROM dbo.qqtest
    WHERE id =6;

    SELECT S.value('id[1]', 'varchar(30)') id,
           S.value('name[1]', 'varchar(30)') _Name,
           S.value('age[1]', 'varchar(30)') age
    FROM @xml.nodes('/root/person') AS A(S); //B(S) 都是没有问题的   @xml.nodes('/root/person') AS A(S) 当做一张表来操作了
    SET @errorCode = 200;
END TRY
BEGIN CATCH
    SET @errorCode = 500;
    SET @errorMsg = ERROR_MESSAGE();
    RAISERROR(N'error:XML文件格式错误:', 16, 1,@errorMsg);
    PRINT(@errorMsg)
END CATCH



获取XML数据  ,把XML数据当做一个表格 @xml.nodes('/Root/data') AS T(S);

select S.value('ID[1]','int')as ID, S.value('Name[1]','nvarchar(50)')as Name
 FROM @xml.nodes('/Root/data') AS T(S);

     2 写入临时表
        INSERT INTO #tbCRM_FranchiseeRecharge
        (
            [Recharge_ID],
            [Franchisee_ID],
            [Recharge_Credit],
            [Recharge_Amount]
        )
        SELECT DISTINCT
               NEWID(),
               S.value('Franchisee_ID[1]', 'uniqueidentifier') AS Franchisee_ID,
               S.value('Recharge_Credit[1]', 'int') AS Recharge_Credit,
               S.value('Recharge_Amount[1]', 'money') AS Recharge_Amount
        FROM @xml.nodes('/Root/data') AS T(S);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!