I have a function which has 10 input parameters.
Initially the ask is one value per parameter.
BUt now the ask is each parametr has multiple values and teh function need to execute for all teh values and give result.
The parameters are of VACHAR and INT datatypes.
Below is teh function I am using.
create or replace
FUNCTION "VF_PPM_PRJ_LIST" (P_LEGAL_ORG_ID IN VARCHAR2 ,P_CONTACTMAIL_ID IN VARCHAR2 ,P_REGION IN VARCHAR2 DEFAULT NULL,P_STATUS_NAME IN VARCHAR2 DEFAULT NULL, P_PROJECT_NAME IN VARCHAR2 DEFAULT NULL
,P_PROJECT_MANAGER IN VARCHAR2 DEFAULT NULL,P_CUSTOMER_PM IN VARCHAR2 DEFAULT NULL,P_PROJECT_PHASE IN VARCHAR2 DEFAULT NULL,P_HIERARCHY_LEVEL IN VARCHAR2 DEFAULT NULL,P_RAG_STATUS IN VARCHAR2 DEFAULT NULL) RETURN TABLE_VF_EC_Project_List
--P_PROJECT_PHASE IN VARCHAR2,
IS
L_TAB_OBJ_VF_EC_Project_List TABLE_VF_EC_Project_List := TABLE_VF_EC_Project_List();
N INTEGER := 0;
BEGIN
FOR R IN (SELECT PROJECT_ID, PROJECT_NAME , REFRESH_DATE, VODAFONE_PM, CUSTOMER_PM, REGION, PROJECT_STATUS, PROJECT_PHASE, OVERALL_HEALTH, TCV,TOTALRISKS, TOTALISSUES FROM
(
SELECT DISTINCT
RHD1.REQUEST_ID AS PROJECT_ID,
P.PROJECT_NAME AS PROJECT_NAME,
SYSTIMESTAMP AS REFRESH_DATE,
RHD1.VISIBLE_PARAMETER40 AS VODAFONE_PM,
VF_GETCUSTOMERPM(RHD1.REQUEST_ID) AS CUSTOMER_PM,
RD7.VISIBLE_PARAMETER41 AS REGION,
PM.DISPLAY_STATUS AS PROJECT_STATUS,
RHD1.VISIBLE_PARAMETER16 AS PROJECT_PHASE,
UPPER(REGEXP_REPLACE(REGEXP_SUBSTR(RHD1.PARAMETER11,' alt="[A-Za-z]+">'),'alt=|"|>|[[:space:]]+')) AS OVERALL_HEALTH,
RD3.VISIBLE_PARAMETER18 AS TCV,
vf_GETTOTALRISKS(RHD1.REQUEST_ID) AS TOTALRISKS,
vf_GETTOTALISSUES(RHD1.REQUEST_ID) AS TOTALISSUES
FROM
KCRT_FG_PFM P,
KCRT R,
KCRT_REQ RHD1,
KCRT_REQUEST RD1,
KCRT_REQUEST RD7,
KCRT_REQUEST RD5,
KCRT_REQUEST RD3,
KCRT_TABLE TE,
KNTA_PARAM_SET TB,
KNTA_PARAMETER TC,
KCRT_REQUEST_TYPESS RT,
PM PM
WHERE
TE.REQUEST_ID = RHD1.REQUEST_ID
AND P.REQUEST_ID = R.REQUEST_ID
AND RD1.BATCH_NUMBER = 1
AND RD1.REQUEST_ID = R.REQUEST_ID
AND RHD1.BATCH_NUMBER = 1
AND RD7.BATCH_NUMBER = 7
AND RD3.BATCH_NUMBER = 3
AND RD5.BATCH_NUMBER = 5
AND RD5.REQUEST_ID = R.REQUEST_ID
AND RD7.REQUEST_ID = R.REQUEST_ID
AND RD3.REQUEST_ID = R.REQUEST_ID
AND RHD1.REQUEST_ID = R.REQUEST_ID
AND PM.PFM_REQUEST_ID = R.REQUEST_ID
AND RHD1.PARAMETER11 IS NOT NULL
AND RHD1.VISIBLE_PARAMETER16 IS NOT NULL
AND RHD1.PARAMETER5 IN ('2','3','4')
AND TE.PARAMETER_SET_FIELD_ID = TB.PARAMETER_SET_FIELD_ID
AND TB.PARAMETER_SET_CONTEXT_ID = TC.PARAMETER_SET_CONTEXT_ID
AND TO_CHAR(TC.CONTEXT_VALUE) = TO_CHAR(RT.REQUEST_TYPE_ID)
AND RT.REQUEST_TYPE_NAME = 'G-TES - PROJECT'
AND RT.MDL_VIEW_NAME_ROOT='G_TES_PROJECT'
AND PM.DISPLAY_STATUS IN ('Active','Active (Basic)')
AND RHD1.VISIBLE_Parameter13 IN ('IoT Delivery','Global Delivery','UC Delivery','Fixed - APMEA','Fixed - Americas')
AND RHD1.VISIBLE_PARAMETER16 NOT IN ('Pre-Sales / Mobilisation')
AND R.STATUS_CODE = 'IN_PROGRESS'
-- AND TE.VISIBLE_PARAMETER3=P_CONTACTMAIL_ID
-- AND P_CONTACTMAIL_ID in '('|| ''''||REGEXP_REPLACE(RD7.VISIBLE_PARAMETER48, '#@#',''',''')||''''||')'
AND lower('('|| ''''||REGEXP_REPLACE(RD7.VISIBLE_PARAMETER48, '#@#',''',''')||''''||')') like lower('%'||P_CONTACTMAIL_ID||'%' )
AND RD5.PARAMETER10 = P_LEGAL_ORG_ID
AND NVL2(P_REGION, INSTR(P_REGION,RD7.VISIBLE_PARAMETER41),1)>0
AND NVL(P_REGION,RD7.VISIBLE_PARAMETER41)= RD7.VISIBLE_PARAMETER41
AND NVL(P_STATUS_NAME,PM.DISPLAY_STATUS) = PM.DISPLAY_STATUS
AND NVL(P_PROJECT_NAME,P.PROJECT_NAME) = P.PROJECT_NAME
AND NVL2(P_PROJECT_MANAGER,INSTR(P_PROJECT_MANAGER,RHD1.VISIBLE_PARAMETER40),1)>0
AND NVL2(P_CUSTOMER_PM, INSTR(P_CUSTOMER_PM,TE.VISIBLE_PARAMETER1),1)>0
AND NVL2(P_PROJECT_PHASE, INSTR(P_PROJECT_PHASE,RHD1.VISIBLE_PARAMETER16),1)>0
AND NVL2(P_HIERARCHY_LEVEL,INSTR(P_HIERARCHY_LEVEL,RHD1.VISIBLE_PARAMETER5),1)>0
AND NVL2(P_RAG_STATUS, INSTR(RHD1.PARAMETER11,P_RAG_STATUS),1)>0
ORDER BY RHD1.REQUEST_ID
))
LOOP
L_TAB_OBJ_VF_EC_Project_List.EXTEND;
N := N + 1;
L_TAB_OBJ_VF_EC_Project_List(N) := VF_EC_PROJECT_LIST(R.PROJECT_ID,R.PROJECT_NAME,R.REFRESH_DATE,R.VODAFONE_PM,R.CUSTOMER_PM,R.REGION,R.PROJECT_STATUS,R.PROJECT_PHASE,R.OVERALL_HEALTH,R.TCV,R.TOTALRISKS,R.TOTALISSUES);
END LOOP;
RETURN L_TAB_OBJ_VF_EC_Project_List;
END;
Could you please suggest how to deal with the multivalue parameters for teh function.
The multivalues in parameter are separated by #@#
Additional information:
We need the parameters in this way
where col1 in ('JOHN','SUE')
and col2 in ('JAN','FEB')
Here's a video walking through how to re-interpret a delimited string into a list you can use within a query