create or replace function ListFirst ( source IN long, delim IN varchar2 ) RETURN long IS pos number; templist long; BEGIN templist := source; pos:=instr(templist,delim); if (pos = 1) then -- clean delimiter from first character in list templist:=substr(templist,pos+1); end if; if (delim = substr(templist,length(templist),1)) then -- clean delimiter from end templist:=substr(templist,1,length(templist)-1); end if; pos:=instr(templist,delim); if pos != 0 then if pos != 1 then return substr(templist,1,pos-1); else return null; end if; else if (length(templist)>0) then return templist; else return null; end if; end if; end ListFirst; / show errors;