CREATE OR REPLACE PROCEDURE SP_EMP_LVTYPE_UPDATE(
in_elmLtmcode IN VARCHAR2 DEFAULT NULL,
in_elmEmcode IN VARCHAR2 DEFAULT NULL,
in_elmCmmcode IN VARCHAR2 DEFAULT NULL,
in_elmTotdays IN VARCHAR2 DEFAULT NULL,
in_elmBaldays IN VARCHAR2 DEFAULT NULL,
in_elmEncashdays IN VARCHAR2 DEFAULT NULL,
in_emcode2 IN VARCHAR2 DEFAULT NULL,
in_qryId IN NUMBER DEFAULT NULL,
retype OUT NUMBER)
AS
elmLtmcode VARCHAR2(500);
elmEmcode VARCHAR2(20);
elmCmmcode VARCHAR2(20);
elmTotdays VARCHAR2(500);
elmBaldays VARCHAR2(100);
elmEncashdays VARCHAR2(100);
qryId NUMBER(10,0);
StoO_selcnt INTEGER;
StoO_error INTEGER;
StoO_rowcnt INTEGER;
StoO_crowcnt INTEGER := 0;
StoO_fetchstatus INTEGER := 0;
StoO_errmsg VARCHAR2(255);
StoO_sqlstatus INTEGER;
LTMcode VARCHAR2(20);
LPos NUMBER(10,0);
Totdays VARCHAR2(20);
Tpos NUMBER(10,0);
Baldays VARCHAR2(20);
Bpos NUMBER(10,0);
Encashdays VARCHAR2(20);
Epos NUMBER(10,0);
Epos1 NUMBER(10,0);
count1 NUMBER(10,0);
count2 NUMBER(10,0);
encdays VARCHAR2(20);
lvtaken VARCHAR2(20);
elmEncashdays1 VARCHAR2(50);
ResigRecords number(10,0);
totEncashdays NUMBER;
emcode2 VARCHAR2(100);
BEGIN
SP_EMP_LVTYPE_UPDATE.elmLtmcode := SP_EMP_LVTYPE_UPDATE.in_elmLtmcode;
SP_EMP_LVTYPE_UPDATE.elmEmcode := SP_EMP_LVTYPE_UPDATE.in_elmEmcode;
SP_EMP_LVTYPE_UPDATE.elmCmmcode := SP_EMP_LVTYPE_UPDATE.in_elmCmmcode;
SP_EMP_LVTYPE_UPDATE.elmTotdays := SP_EMP_LVTYPE_UPDATE.in_elmTotdays;
SP_EMP_LVTYPE_UPDATE.elmBaldays := SP_EMP_LVTYPE_UPDATE.in_elmBaldays;
SP_EMP_LVTYPE_UPDATE.elmEncashdays := SP_EMP_LVTYPE_UPDATE.in_elmEncashdays;
SP_EMP_LVTYPE_UPDATE.emcode2:=SP_EMP_LVTYPE_UPDATE .in_emcode2 ;
SP_EMP_LVTYPE_UPDATE.qryId := SP_EMP_LVTYPE_UPDATE.in_qryId;
SP_EMP_LVTYPE_UPDATE.retype := 0;
IF SP_EMP_LVTYPE_UPDATE.qryId = 1 THEN
BEGIN
NULL;
SP_EMP_LVTYPE_UPDATE.elmLtmcode := LTRIM(RTRIM(SP_EMP_LVTYPE_UPDATE.elmLtmcode)) || ',';
SP_EMP_LVTYPE_UPDATE.LPos := INSTR(SP_EMP_LVTYPE_UPDATE.elmLtmcode,',',1);
SP_EMP_LVTYPE_UPDATE.elmTotdays := LTRIM(RTRIM(SP_EMP_LVTYPE_UPDATE.elmTotdays)) || ',';
SP_EMP_LVTYPE_UPDATE.Tpos := INSTR(SP_EMP_LVTYPE_UPDATE.elmTotdays,',',1);
SP_EMP_LVTYPE_UPDATE.elmBaldays := LTRIM(RTRIM(SP_EMP_LVTYPE_UPDATE.elmBaldays)) || ',';
SP_EMP_LVTYPE_UPDATE.Bpos := INSTR(SP_EMP_LVTYPE_UPDATE.elmBaldays,',',1);
SP_EMP_LVTYPE_UPDATE.elmEncashdays := LTRIM(RTRIM(SP_EMP_LVTYPE_UPDATE.elmEncashdays)) || ',';
SP_EMP_LVTYPE_UPDATE.Epos := INSTR(SP_EMP_LVTYPE_UPDATE.elmEncashdays,',',1);
dbms_output.put_line('hello1'||SP_EMP_LVTYPE_UPDAT E.emcode2);
IF ( ( REPLACE(SP_EMP_LVTYPE_UPDATE.elmLtmcode, ',', '') IS NOT NULL) and ( REPLACE(SP_EMP_LVTYPE_UPDATE.elmTotdays, ',', '') IS NOT NULL) and ( REPLACE(SP_EMP_LVTYPE_UPDATE.elmBaldays, ',', '') IS NOT NULL) and ( REPLACE(SP_EMP_LVTYPE_UPDATE.elmEncashdays, ',', '') IS NOT NULL)) THEN
BEGIN
dbms_output.put_line('hello2'||SP_EMP_LVTYPE_UPDAT E.emcode2);
<<i_loop1>>
WHILE ( SP_EMP_LVTYPE_UPDATE.LPos > 0 and SP_EMP_LVTYPE_UPDATE.Tpos > 0 and SP_EMP_LVTYPE_UPDATE.Bpos > 0 and SP_EMP_LVTYPE_UPDATE.Epos > 0) LOOP
BEGIN
dbms_output.put_line('hello3'||SP_EMP_LVTYPE_UPDAT E.emcode2);
SP_EMP_LVTYPE_UPDATE.LTMcode := LTRIM(RTRIM(SUBSTR(SP_EMP_LVTYPE_UPDATE.elmLtmcode , 0,SP_EMP_LVTYPE_UPDATE.LPos - 1)));
SP_EMP_LVTYPE_UPDATE.Totdays := LTRIM(RTRIM(SUBSTR(SP_EMP_LVTYPE_UPDATE.elmTotdays , 0,SP_EMP_LVTYPE_UPDATE.Tpos - 1)));
SP_EMP_LVTYPE_UPDATE.Baldays := LTRIM(RTRIM(SUBSTR(SP_EMP_LVTYPE_UPDATE.elmBaldays , 0,SP_EMP_LVTYPE_UPDATE.Bpos - 1)));
SP_EMP_LVTYPE_UPDATE.Encashdays := LTRIM(RTRIM(SUBSTR(SP_EMP_LVTYPE_UPDATE.elmEncashd ays, 0,SP_EMP_LVTYPE_UPDATE.Epos - 1)));
IF ( SP_EMP_LVTYPE_UPDATE.LTMcode IS NOT NULL and SP_EMP_LVTYPE_UPDATE.Totdays <> '0' and SP_EMP_LVTYPE_UPDATE.Baldays <> '0' and SP_EMP_LVTYPE_UPDATE.Encashdays <> '0') THEN
BEGIN
BEGIN
StoO_error := 0;
StoO_rowcnt := 0;
dbms_output.put_line('hello4'||SP_EMP_LVTYPE_UPDAT E.emcode2);
dbms_output.put_line('hello5'||(SP_EMP_LVTYPE_UPDA TE.LTMcode) );
UPDATE EMP_LVTYPE_MAP
SET
ELMLTMCODE = CAST(SP_EMP_LVTYPE_UPDATE.LTMcode AS VARCHAR2(20)),
ELMEMCODE = SP_EMP_LVTYPE_UPDATE.elmEmcode,
ELMCMMCODE = SP_EMP_LVTYPE_UPDATE.elmCmmcode,
ELMTOTDAYS = CAST(SP_EMP_LVTYPE_UPDATE.Totdays AS VARCHAR2(20)),
ELMBALDAYS = CAST(SP_EMP_LVTYPE_UPDATE.Baldays AS NUMBER(5,2)),
ELMENCASHDAYS = CAST(SP_EMP_LVTYPE_UPDATE.Encashdays AS NUMBER(5,2)),
UPDATEDBY = SP_EMP_LVTYPE_UPDATE.emcode2
WHERE ELMLTMCODE = CAST(SP_EMP_LVTYPE_UPDATE.LTMcode AS VARCHAR2(20))
and ELMEMCODE = SP_EMP_LVTYPE_UPDATE.elmEmcode
and ELMCMMCODE = SP_EMP_LVTYPE_UPDATE.elmCmmcode;
StoO_rowcnt := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
StoO_error := SQLCODE;
StoO_errmsg := SQLERRM;
END;
END;
END IF;
SP_EMP_LVTYPE_UPDATE.elmLtmcode := SUBSTR(SP_EMP_LVTYPE_UPDATE.elmLtmcode, SP_EMP_LVTYPE_UPDATE.LPos + 1, LENGTH(SP_EMP_LVTYPE_UPDATE.elmLtmcode));
SP_EMP_LVTYPE_UPDATE.LPos := INSTR(SP_EMP_LVTYPE_UPDATE.elmLtmcode,',',1);
SP_EMP_LVTYPE_UPDATE.elmTotdays := SUBSTR(SP_EMP_LVTYPE_UPDATE.elmTotdays, SP_EMP_LVTYPE_UPDATE.Tpos + 1, LENGTH(SP_EMP_LVTYPE_UPDATE.elmTotdays));
SP_EMP_LVTYPE_UPDATE.Tpos := INSTR(SP_EMP_LVTYPE_UPDATE.elmTotdays,',',1);
SP_EMP_LVTYPE_UPDATE.elmBaldays := SUBSTR(SP_EMP_LVTYPE_UPDATE.elmBaldays, SP_EMP_LVTYPE_UPDATE.Bpos + 1, LENGTH(SP_EMP_LVTYPE_UPDATE.elmBaldays));
SP_EMP_LVTYPE_UPDATE.Bpos := INSTR(SP_EMP_LVTYPE_UPDATE.elmBaldays,',',1);
SP_EMP_LVTYPE_UPDATE.elmEncashdays := SUBSTR(SP_EMP_LVTYPE_UPDATE.elmEncashdays, SP_EMP_LVTYPE_UPDATE.Epos + 1, LENGTH(SP_EMP_LVTYPE_UPDATE.elmEncashdays));
SP_EMP_LVTYPE_UPDATE.Epos := INSTR(SP_EMP_LVTYPE_UPDATE.elmEncashdays,',',1);
END;
END LOOP;
SP_EMP_LVTYPE_UPDATE.retype := 1;
END;
ELSE
BEGIN
SP_EMP_LVTYPE_UPDATE.retype := 0;
END;
END IF;
END;
END IF;
this is my whole procedure.
check it sir...
