Split varchar2 variable based on vertical line delimiter I have following plsql code

DECLARE
   v_personal_info VARCHAR2(100);
   v_name VARCHAR2(100);
   v_signature VARCHAR2(100);
   CURSOR c_personal_info
   IS
     select personal_info from users where name is not null;
BEGIN
  FOR lr_row IN c_personal_info
  LOOP
    v_personal_info := lr_row.personal_info;
    -- Need to split v_personal_info based on |
  END LOOP;
END;
/


Typical values of v_personal_info will look like 'Aniket Thakur | athakur' and I need to split this to different variables like

v_name := 'Aniket Thakur'
v_signature := 'athakur'


How should I do that. Is there any in built function that does a split based on predefined delimiter?
You can use the functions INSTR to locate the poition of '|' in the string and SUBSTR to retrieve the relevant part of the string. 

So

select  
    SUBSTR(personal_info, 1, INSTR(personal_info, '|') - 1),
    SUBSTR(personal_info,INSTR(personal_info, '|') +1 )
from users


will returrn two columns with the appropriate parts of personal_info.