Insert Stored Procedure not working
765030Apr 7 2010 — edited Apr 7 2010I'm trying to insert some data, using a stored procedure. I cannot see what seems to be the problem in my procedure.
PROCEDURE SP_INSPROCDETAILS(I_INITD IN INITIATIVEMASTER.INITIATIVEID%TYPE,
-- I_INITD = 5414
I_CNTID IN COUNTRYMASTER.COUNTRYID%TYPE,
-- I_CNTID = 5
I_USERID IN USERMASTER.USERID%TYPE,
-- I_USERID = 5405
I_DETAIL IN VARCHAR2,
-- STRING THATWILL COME FROM UI
-- I_DETAIL = #10414~1234567890~1234567890~test-PONumber~1~1~1~5128~Executor for PO1
I_DELIMITER_FIRST IN VARCHAR2, -- '~'
I_DELIMITER_SECOND IN VARCHAR2, - '#'
O_ERRCODE OUT VARCHAR2,
O_ERRMSG OUT VARCHAR2)
IS
ARR_STRING VAR_TAB;
ARR_STRING2 VAR_TAB;
V_ID NUMBER;
VAR_ESTIMATEDDATE VARCHAR2(500);
VAR_DODATE VARCHAR2(500);
V_INITID INITIATIVEDETAILS.INITDETAILSID%TYPE;
V_INTRANET USERMASTER.INTRANETID%TYPE;
V_CNT NUMBER;
V_CREATED PROCUREMENTDETAILS.CREATEDBY%TYPE;
V_DATE PROCUREMENTDETAILS.CREATEDDATE%TYPE;
VAR_FLOAT PROCUREMENTDETAILS.POPRICE%TYPE;
VAR_REPLACE VARCHAR2(500);
BEGIN
---SELECT INITDETAILSID FROM INITIATIVE AND COUNTRY
SELECT INTD.INITDETAILSID
INTO V_INITID
FROM INITIATIVEDETAILS INTD
WHERE INTD.INITIATIVEID = I_INITD AND ( INTD.COUNTRYID = I_CNTID
OR INTD.COUNTRYID IS NULL);
--SELECT INTRANETID FROM USERID
SELECT U.INTRANETID
INTO V_INTRANET
FROM USERMASTER U
WHERE U.USERID = I_USERID;
---CHECKING IF DATA IS PRESENT IN PROCUREMENT TABLE IF PRESNT THEN DELETE AND REINSERT IT
SELECT COUNT(*)
INTO V_CNT
FROM PROCUREMENTDETAILS PC
WHERE PC.INITDETAILSID = V_INITID;
IF V_CNT > 0 THEN
--TAKING THE CREATEDBY AND CREATEDDATE FOR THAT INITIATIVEDETAILSID
SELECT DISTINCT PC.CREATEDBY, PC.CREATEDDATE
INTO V_CREATED, V_DATE
FROM PROCUREMENTDETAILS PC
WHERE PC.INITDETAILSID = V_INITID;
DELETE FROM PROCUREMENTDETAILS PC WHERE PC.INITDETAILSID = V_INITID;
ARR_STRING := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_SECOND,
I_STRING => I_DETAIL);
FOR I IN 1 .. ARR_STRING.COUNT LOOP
IF ARR_STRING(I) IS NOT NULL THEN
ARR_STRING2 := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_FIRST,
I_STRING => ARR_STRING(I));
VAR_DODATE :=ARR_STRING2(3);
VAR_ESTIMATEDDATE :=ARR_STRING2(8);
VAR_FLOAT := REPLACE (ARR_STRING2(5),',',NULL) ;
VAR_REPLACE := REPLACE (ARR_STRING2(6),',',NULL);
SELECT SEQ_PROCUREMENTDETAILS.NEXTVAL INTO V_ID FROM DUAL;
INSERT INTO PROCUREMENTDETAILS
(PROCUREMENTID,
INITDETAILSID,
POSMID,
PONUMBER,
GL,
IO,
POQTY,
POPRICE,
POVALUE,
SUPPLIERID,
EXECUTOR,
CREATEDBY,
CREATEDDATE,
MODIFIEDBY,
MODIFIEDDATE)
VALUES
(V_ID,
V_INITID,
ARR_STRING2(1),
ARR_STRING2(2),
ARR_STRING2(3),
ARR_STRING2(4),
ARR_STRING2(5),
ARR_STRING2(6),
ARR_STRING2(7),
ARR_STRING2(8),
ARR_STRING2(9),
V_CREATED,
V_DATE,
V_INTRANET,
SYSDATE);
VAR_FLOAT :=NULL;
END IF ;
END LOOP;
ELSE
ARR_STRING := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_SECOND,
I_STRING => I_DETAIL);
FOR I IN 1 .. ARR_STRING.COUNT LOOP
IF ARR_STRING(I) IS NOT NULL THEN
ARR_STRING2 := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_FIRST,
I_STRING => ARR_STRING(I));
VAR_DODATE :=ARR_STRING2(3);
VAR_ESTIMATEDDATE :=ARR_STRING2(8);
VAR_FLOAT := REPLACE (ARR_STRING2(5),',',NULL) ;
VAR_REPLACE := REPLACE (ARR_STRING2(6),',',NULL);
SELECT SEQ_PROCUREMENTDETAILS.NEXTVAL INTO V_ID FROM DUAL;
INSERT INTO PROCUREMENTDETAILS
(PROCUREMENTID,
INITDETAILSID,
POSMID,
PONUMBER,
GL,
IO,
POQTY,
POPRICE,
POVALUE,
SUPPLIERID,
EXECUTOR,
CREATEDBY,
CREATEDDATE,
MODIFIEDBY,
MODIFIEDDATE)
VALUES
(V_ID,
V_INITID,
ARR_STRING2(1),
ARR_STRING2(2),
ARR_STRING2(3),
ARR_STRING2(4),
ARR_STRING2(5),
ARR_STRING2(6),
ARR_STRING2(7),
ARR_STRING2(8),
ARR_STRING2(9),
V_CREATED,
V_DATE,
V_INTRANET,
SYSDATE);
END IF ;
END LOOP;
END IF ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
O_ERRCODE := 'E001';
O_ERRMSG := 'ERROR ' || TO_CHAR(SQLCODE) || ': ' || SQLERRM;
WHEN OTHERS THEN
O_ERRCODE := 'E005';
O_ERRMSG := 'ERROR ' || TO_CHAR(SQLCODE) || ': ' || SQLERRM;
END SP_INSPROCDETAILS;