Poniższe zapytanie ma za zadanie wyszukiwać w wejściowym tekście różnych kodów błędów Oracle. Kody błędów wyszukiwane są za pomocą wyrażeń regularnych. Użycie funkcji uprościło zapytanie i umożliwiło wykonanie DISTINCT
WITH FUNCTION PARSE(ARG VARCHAR2) RETURN VARCHAR2 AS
vc_Wynik VARCHAR2(100 CHAR);
BEGIN
SELECT LISTAGG(BLAD, ',') WITHIN GROUP( ORDER BY 1) INTO vc_Wynik
FROM
(SELECT DISTINCT REGEXP_SUBSTR( arg, 'ORA[[:punct:]][[:digit:]]{4,5}',1, LEVEL) BLAD FROM DUAL
CONNECT BY LEVEL <= REGEXP_COUNT( arg, 'ORA[[:punct:]][[:digit:]]{4,5}'));
RETURN vc_Wynik;
END;
SELECT PARSE( 'pierwszy ORA-33344 Drugi
ORA-2342 Trzeci ORA ORA-66666--') FROM DUAL