zoukankan      html  css  js  c++  java
  • XML转义--SQL函数

    XML BI Publisher 做发票,

    物料型号中有 XML 关键字符,因此需要转义

    -------------------------------------------------------
    -- PLSQL 
    -- 傳入字串,將特殊符號轉成符合XML格式
    -------------------------------------------------------
      FUNCTION REPLACE_FOR_XML(P_STR IN  VARCHAR2) RETURN VARCHAR2 is
        v_str     varchar2(2000);
      BEGIN
         -- 單引號
        select replace(P_STR,chr(39),chr(38)||'apos;')
          into v_str
          from dual;
    
       --  2019/6/6  雙引號
       select replace(v_str,CHR(34),chr(38)||'quot;')
          into v_str
          from dual;
    
         -- & 連接符
        select replace(v_str,chr(38),chr(38)||'amp;')
          into v_str
          from dual;
    
          -- 小於號
        select replace(v_str,'<',chr(38)||'lt;')
          into v_str
          from dual;
          -- 大於號
        select replace(v_str,'>',chr(38)||'gt;')
          into v_str
          from dual;
          
        RETURN (v_str);
      END;  

    实际还是不能展出目标结果。因为 单引号及双引号转义后 字符串 分别是 “&apos;” 和 “&quot;”, 在第三个转义,则将“&”连接符再次转义为

    "&amp;"

    故 必须 要将 “&”连接字符的转义放在第一个位置。

    正确顺序如下代码:

    -------------------------------------------------------
    -- 傳入字串,將特殊符號轉成符合XML格式
    -------------------------------------------------------
      FUNCTION REPLACE_FOR_XML(P_STR IN  VARCHAR2) RETURN VARCHAR2 is
        v_str     varchar2(2000);
      BEGIN
         -- & 連接符
        select replace(P_STR,chr(38),chr(38)||'amp;')
          into v_str
          from dual;
              
         -- 單引號
        select replace(v_str,chr(39),chr(38)||'apos;')
          into v_str
          from dual;
    
       --   雙引號
       select replace(v_str,CHR(34),chr(38)||'quot;')
          into v_str
          from dual;
    
          -- 小於號
        select replace(v_str,'<',chr(38)||'lt;')
          into v_str
          from dual;
          -- 大於號
        select replace(v_str,'>',chr(38)||'gt;')
          into v_str
          from dual;
          
        RETURN (v_str);
      END;  
    优质生活从拆开始
  • 相关阅读:
    文章块引用模版
    悬停工具提示
    各个知识点
    Github Fork 缎带.html
    css重置样式
    暗灰色的圆形按钮.html
    css中的居中的方法
    display:table的几个用法 块级子元素垂直居中
    <meta>标签中http-equiv属性的属性值X-UA-Compatible详解
    jQuery难学是因为什么?
  • 原文地址:https://www.cnblogs.com/samrv/p/10996294.html
Copyright © 2011-2022 走看看