title: regexp_substr all occurence of doc. XXX
body: <p>Here a sample code:</p>
  <pre><code>set define off;
  drop table brol;
  
  create table brol
  (
  br varchar2(4000)
  );
  
  INSERT INTO brol ( br ) VALUES ( 'Proposition de décret institutionnalisant l assemblée citoyenne et le conseil citoyen, déposée par Madame Schyns (Doc. 221 (2019-2020) N° 1 et 1bis)
  Proposition de décret spécial modifiant les articles 2, 5, 6 et 7 du décret spécial du 19 juillet 2018 instituant la consultation populaire, déposée par Madame Schyns (Doc. 222 (2019-2020) N° 1)
  Proposition de modification du Règlement du Parlement de Wallonie visant à institutionnaliser les assemblées citoyennes et conseils citoyens, déposée par Madame Schyns (Doc. 223 (2019-2020) N° 1)
  Rapporteur : Monsieur Sahli
  Proposition de décret spécial modifiant les articles 2, 5, 6 et 7 du décret spécial du 19 juillet 2018 instituant la consultation populaire en vue d octroyer un droit d initiative aux commissions délibératives composées de députés et de citoyens tirés au sort, déposée par Madame Schyns, Messieurs Desquesnes, Antoine et Bastin (Doc. 278 (2020-2021) N° 1)
  Désignation d un Rapporteur 
  Discussion - Votes
  ' );
  
  commit;
  
  select * from brol;
  </code></pre>
  <p>When i execute the next query:</p>
  <pre><code>select REGEXP_SUBSTR(br,'Doc. ([[:alnum:]]+\.?)') from brol;
  </code></pre>
  <p>i have as result:</p>
  <pre><code>Doc. 221
  </code></pre>
  <p>That a first good step and I was very happy to find it...
  But I need also to have as return:</p>
  <pre><code>Doc. 222 
  Doc. 223
  Doc. 278 
  </code></pre>
  <p>I m not able to have all 3 at the same moment..
  Could you please help me to find what i forgot in the regexp_substr ?</p>
  <pre><code>select REGEXP_SUBSTR(br,'Doc. ([[:alnum:]]+\.?)',1,1) from brol;
  </code></pre>
  <p>Doc. 221</p>
  <pre><code>select REGEXP_SUBSTR(br,'Doc. ([[:alnum:]]+\.?)',1,2) from brol;
  </code></pre>
  <p>Doc. 222</p>
  <pre><code>select REGEXP_SUBSTR(br,'Doc. ([[:alnum:]]+\.?)',1,3) from brol;
  </code></pre>
  <p>Doc. 223</p>
  <pre><code>select REGEXP_SUBSTR(br,'Doc. ([[:alnum:]]+\.?)',1,4) from brol;
  </code></pre>
  <p>Doc. 278</p>
  <p>Is there a way to know how many I ll find ?
  ==&gt; nO it s not possible..</p>
  <p>I found the approach with a function <a href="https://stackoverflow.com/a/23683522/10710461">https://stackoverflow.com/a/23683522/10710461</a></p>
  <pre><code>create or replace function regexp_substr_mr (
  </code></pre>
  <p>p_data clob,
  p_re varchar
  )
  return varchar as
  v_cnt number;
  v_results varchar(4000);
  begin
  v_cnt := regexp_count(p_data, p_re, 1,'m');
  if v_cnt &lt; 25 then
  for i in 1..v_cnt loop
  v_results := v_results || regexp_substr(p_data,p_re,1,i,'m') || chr(13) || chr(10);
  end loop;
  else
  v_results := 'WARNING more than 25 matches found';
  end if;</p>
  <p>return v_results;
  end;</p>
  <p>But i m not able to adapt it...</p>
  <p>Thx,</p>
  <p>R.D</p>