mercoledì 13 maggio 2020

RDBMS ORACLE - SPLIT TEXT with Function

Altro modo per ottenere lo split di una stringa è l'utilizzo di una funzione creata appositamente per ritornare i singoli componenti della stringa divisi da un delimitatore:


-- ----------------------------------------------------------------------------

FUNCTION split_text (p_text       IN  CLOB,
                     p_delimeter  IN  VARCHAR2 DEFAULT '§')
  RETURN t_split_array IS
-- ----------------------------------------------------------------------------
  l_array  t_split_array   := t_split_array();
  l_text   CLOB := p_text;
  l_idx    NUMBER;
BEGIN
  l_array.delete;

  IF l_text IS NULL THEN
    RAISE_APPLICATION_ERROR(-20000, 'P_TEXT parameter cannot be NULL');
  END IF;

  WHILE l_text IS NOT NULL LOOP
    l_idx := INSTR(l_text, p_delimeter);
    l_array.extend;
    IF l_idx > 0 THEN
      l_array(l_array.last) := SUBSTR(l_text, 1, l_idx - 1);
      l_text := SUBSTR(l_text, l_idx + 1);
    ELSE
      l_array(l_array.last) := l_text;
      l_text := NULL;
    END IF;
  END LOOP;
  RETURN l_array;
END split_text;
-- ----------------------------------------------------------------------------

 Questa funzione può essere richiamata all'interno di uno statement pl-sql nel seguente modo:

PROCEDURA PL-SQL
....

str_1 t_split_array;

BEGIN
...

str_1 := split_text (v_resourceid1,v_delimeter) ;

for i in 1..str_1.count
   loop
         dbms_output.put_line(str_1(i));

  end loop;

....

END;

Questo se occorre processare un singolo elemento distinto della stringa.

Nessun commento:

Posta un commento