The following example shows how to use SUBSTR and INSTR to extract strings of variable length.
The table ALL_SOURCE is queried in order to find all system defined exceptions.
select
substr
(text, -- text of which substr is to be taken
instr( -- beginning of substring
text, -- find 'EXCEPTION_INIT' within text and add length
'EXCEPTION_INIT(')
+LENGTH('EXCEPTION_INIT('),
instr( -- length of substr
text, -- search text
',', -- find a ','
instr(text, 'EXCEPTION_INIT(') -- after the length calculated as
+ LENGTH ('EXCEPTION_INIT(')) -- above
- -- and substract
(instr(text, 'EXCEPTION_INIT(') -- the end position of
+ LENGTH ('EXCEPTION_INIT(')) -- EXCEPTION_INIT
) "Exceptions"
from all_source where name = 'STANDARD' and type = 'PACKAGE' and text like '%EXCEPTION%'
/