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;  
    优质生活从拆开始
  • 相关阅读:
    软件工程15 结对编程作业
    软工网络15个人阅读作业2——提问题
    软件工程网络15个人阅读作业1
    第15周-反射与JSP
    Java课程设计-定时器(团队)
    Java课程设计-定时器
    第14周-数据库
    网络15软工个人作业5——软件工程总结
    软工网络15个人作业4——alpha阶段个人总结
    软工网络15个人作业3——案例分析
  • 原文地址:https://www.cnblogs.com/samrv/p/10996294.html
Copyright © 2011-2022 走看看