2
 select fnCountryXml('fr,ie','test') from dual; CREATE OR REPLACE FUNCTION fnCountryXml(pCountryList IN VARCHAR2  ,pActionDetail IN VARCHAR2  ) RETURN VARCHAR2 IS  vStartIdx BINARY_INTEGER;  vEndIdx BINARY_INTEGER;  vCurValue VARCHAR2(1000);  vXmlList VARCHAR2(1000);  vXmlReturned VARCHAR2(4000);  vLoopCount BINARY_INTEGER := 0; BEGIN  vStartIdx := 0;  vEndIdx := INSTR(pCountryList, ',');  WHILE(vEndIdx > 0 AND vLoopCount < 100) LOOP  vCurValue := substr(pCountryList, vStartIdx+1, vEndIdx - vStartIdx - 1);  vXmlList := vXmlList|| '<IRRecipient RecipientCountry="' || vCurValue ||'"  ActionRequestedDetail="' || pActionDetail ||'" ></IRRecipient>';  vStartIdx := vEndIdx;  vEndIdx := instr(pCountryList, ',', vStartIdx + 1); vLoopCount := vLoopCount+1;  END LOOP;  vCurValue := substr(pCountryList, vStartIdx+1);  vXmlList := vXmlList|| '<IRRecipient RecipientCountry="' || vCurValue ||'" Ac tionRequestedDetail="' || pActionDetail ||'" ></IRRecipient>';  vXmlReturned := vXmlList;  RETURN vXmlReturned; END fnCountryXml;

fnCountryXml

Embed Size (px)

DESCRIPTION

function to parse comma separated list of values and return xml tags

Citation preview

select fnCountryXml('fr,ie','test') from dual;CREATE OR REPLACE FUNCTION fnCountryXml(pCountryList IN VARCHAR2 ,pActionDetail IN VARCHAR2 )RETURN VARCHAR2IS vStartIdx BINARY_INTEGER; vEndIdx BINARY_INTEGER; vCurValue VARCHAR2(1000); vXmlList VARCHAR2(1000); vXmlReturned VARCHAR2(4000); vLoopCount BINARY_INTEGER := 0;BEGIN vStartIdx := 0; vEndIdx := INSTR(pCountryList, ','); WHILE(vEndIdx > 0 AND vLoopCount < 100) LOOP vCurValue := substr(pCountryList, vStartIdx+1, vEndIdx - vStartIdx - 1); vXmlList := vXmlList|| ''; vStartIdx := vEndIdx; vEndIdx := instr(pCountryList, ',', vStartIdx + 1); vLoopCount := vLoopCount+1; END LOOP; vCurValue := substr(pCountryList, vStartIdx+1); vXmlList := vXmlList|| ''; vXmlReturned := vXmlList; RETURN vXmlReturned;END fnCountryXml;