1

有时我的存储过程会被调用,其中包含一个包含嵌入式转义 (ESC) 序列的字符串。例如: person 输入abc&def,存储过程将获得转义的等价物:abc&def

存储过程需要

  1. 认识到它收到了 ESC 序列,并且
  2. 必须在字符串计算长度期间将每个 ESC 序列计为 1 个字符。

因此,对于上面的字符串示例,abc&def,它会将其识别为长度为 7 (表示最初输入的长度abc&def),因此字符&将计为 1 个字符。

在 PL/SQL 中是否有直接的方法来做到这一点?我们正在运行 11g。

4

1 回答 1

4

您只需要取消转义字符串。这里记录了一个技巧:

SELECT DBMS_XMLGEN.CONVERT ('abc&def',1)
      ,LENGTH(
         DBMS_XMLGEN.CONVERT ('abc&def',1)
       )
FROM DUAL;

abc&def  7
于 2013-06-11T04:03:44.817 回答