Plsql 替换链

Plsql 替换链,plsql,replace,chain,Plsql,Replace,Chain,是否存在避免批量替换链的方法? i、 e 选择 例如:(替换)替换(替换)替换(替换)替换(替换( 几根绳子 不幸的是,我的一位同事最近编写了一个PL/SQL函数来实现这一点,类似这样: PACKAGE BODY string_utils IS FUNCTION multi_replace ( p_string VARCHAR2 , p_search1 VARCHAR2 , p_replace1 VARCHAR2 DEFAULT NULL

是否存在避免批量替换链的方法? i、 e

选择
例如:(替换)替换(替换)替换(替换)替换(替换(
几根绳子

不幸的是,我的一位同事最近编写了一个PL/SQL函数来实现这一点,类似这样:

PACKAGE BODY string_utils IS

   FUNCTION multi_replace
      ( p_string    VARCHAR2
      , p_search1   VARCHAR2
      , p_replace1  VARCHAR2 DEFAULT NULL
      , p_search2   VARCHAR2 DEFAULT NULL
      , p_replace2  VARCHAR2 DEFAULT NULL
      , p_search3   VARCHAR2 DEFAULT NULL
      , p_replace3  VARCHAR2 DEFAULT NULL
      , p_search4   VARCHAR2 DEFAULT NULL
      , p_replace4  VARCHAR2 DEFAULT NULL
      , p_search5   VARCHAR2 DEFAULT NULL
      , p_replace5  VARCHAR2 DEFAULT NULL
      , p_search6   VARCHAR2 DEFAULT NULL
      , p_replace6  VARCHAR2 DEFAULT NULL
      , p_search7   VARCHAR2 DEFAULT NULL
      , p_replace7  VARCHAR2 DEFAULT NULL
      , p_search8   VARCHAR2 DEFAULT NULL
      , p_replace8  VARCHAR2 DEFAULT NULL
      , p_search9   VARCHAR2 DEFAULT NULL
      , p_replace9  VARCHAR2 DEFAULT NULL
      ) RETURN          VARCHAR2
   IS
      l_result_str   VARCHAR2(32767) := p_string;
   BEGIN
      IF p_search1 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search1, p_replace1);
      END IF;

      IF p_search2 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search2, p_replace2);
      END IF;

      IF p_search3 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search3, p_replace3);
      END IF;

      IF p_search4 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search4, p_replace4);
      END IF;

      IF p_search5 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search5, p_replace5);
      END IF;

      IF p_search6 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search6, p_replace6);
      END IF;

      IF p_search7 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search7, p_replace7);
      END IF;

      IF p_search8 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search8, p_replace8);
      END IF;

      IF p_search9 IS NOT NULL THEN
         l_result_str := REPLACE(l_result_str, p_search9, p_replace9);
      END IF;

      RETURN l_result_str;

   END multi_replace;

END;

一些样本数据和预期结果会有所帮助。这意味着什么?