Oracle Procedure
Oracle Procedure
RETURN CONCAT('SOLD',CONCAT('|',DCNO));
END IF;
create or replace
FUNCTION TFF(dateFrom IN VARCHAR, dateTo IN VARCHAR)
RETURN VARCHAR2
IS
CURSOR c1 IS SELECT LOCATION,PRODUCT,SERIAL,TIME,SAPDATE FROM SORTINGBUFFERL3 WH
ERE status= 9 AND to_char(TIME,'YYYY-MM-DD') BETWEEN dateFrom AND dateTo;
c_prod c1%ROWTYPE;
BEGIN
open c1;
loop
fetch c1 into c_prod;
exit WHEN c1%NOTFOUND;
/*result:=DBMS_OUTPUT.put_line(c_prod.LOCATION || c_prod.PRODUCT || c_prod.Seria
l || c_prod.TIME || c_prod.SAPDATE);*/
END loop;
RETURN c_prod.LOCATION || c_prod.PRODUCT || c_prod.Serial || c_prod.TIME || c_pr
od.SAPDATE;
CLOSE c1;
END TFF;
create or replace
PROCEDURE CK_IFSOLD
AS
DCNO
VARCHAR2(15);
ISINT2WHL3 NUMBER;
ISINT2WH NUMBER;
MONTHDIFF NUMBER;
DTIME DATE;
CURSOR RW
IS
SELECT PRODUCT,SERIAL,LINE,SAPDATE FROM CHECKIFSOLD WHERE SOLDORREPACK = 0;
RW_DATA RW%ROWTYPE;
BEGIN
SET transaction name 'CK_IF_SOLD';
OPEN RW;
LOOP
FETCH RW INTO RW_DATA;
BEGIN
SELECT ORDER_NO,
DATETIME
INTO DCNO,
DTIME
FROM EPIC.NB_MASTER_BARCODE_ARCTIC@EPIC_LINK
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL_NUMBER = RW_DATA.SERIAL
AND DATETIME
=
(SELECT MAX(DATETIME)
FROM EPIC.NB_MASTER_BARCODE_ARCTIC@EPIC_LINK
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL_NUMBER = RW_DATA.SERIAL
);
SELECT CAST(TO_CHAR(SYSDATE,'MM') AS NUMBER) - CAST(SUBSTR(RW_DATA.SERIAL,
9,2) AS NUMBER)
INTO MONTHDIFF
FROM DUAL;
IF LPAD(DCNO,3) = '410' THEN
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT EXISTS IN TRANSACT2WH'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT OLDER THAN 2 MONTHS'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
WHEN RW_DATA.LINE = '5' THEN
IF (MONTHDIFF > 2) THEN
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT OLDER THAN 2 MONTHS'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
END CASE;
/*DBMS_OUTPUT.PUT_LINE(rw_data.PRODUCT || ' ' || rw_data.SERIAL || ' ' |
| 'SOLD');*/
ELSE
/* THE PRODUCT HAS Y01 OR ANY OTHER OPERATION */
UPDATE CHECKIFSOLD
SET SOLDORREPACK = 2,
DOCNO
= DCNO,
ABSOPERATIONDATE = DTIME,
LASTCHECK
= sysdate
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
CASE
WHEN RW_DATA.LINE = '3' or RW_DATA.LINE='6' THEN
IF (MONTHDIFF < 2) THEN
SELECT COUNT(LINE)
INTO ISINT2WHL3
FROM SORTING.TRANSACT2WHL3
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
IF ISINT2WHL3 = 0 THEN
/*INSERT
INTO SORTING.TRANSACT2WHL3
(
MUSER,
PLANT,
LINE,
PRODUCT,
SERIAL,
PRODDATE,
DOC_NO,
BF,
TR,
SAPDATE
)
(SELECT 'SORTING',
'ROGP',
LINE,
PRODUCT,
SERIAL,
SAPDATE,
DCNO,
1,1,
SAPDATE
FROM SORTING.CHECKIFSOLD
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL
);*/
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM SORTING.CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT INSERTED IN TRANSACT2WH'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM SORTING.CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT EXISTS IN TRANSACT2WH'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT OLDER THAN 2 MONTHS'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
WHEN RW_DATA.LINE = '4' OR RW_DATA.LINE = '1' THEN
IF (MONTHDIFF < 2) THEN
SELECT COUNT(LINE)
INTO ISINT2WH
FROM SORTING.TRANSACT2WH
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
IF ISINT2WH = 0 THEN
/*INSERT
INTO SORTING.TRANSACT2WH
(
MUSER,
PLANT,
LINE,
PRODUCT,
SERIAL,
PRODDATE,
DOC_NO,
BF,
TR,
SAPDATE
)
(SELECT 'SORTING',
'ROGP',
LINE,
PRODUCT,
SERIAL,
SAPDATE,
DCNO,
1,1,
SAPDATE
FROM SORTING.CHECKIFSOLD
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL
);*/
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT INSERTED IN TRANSACT2WH'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT EXISTS IN TRANSACT2WH'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
ELSE
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT OLDER THAN 2 MONTHS'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
END IF;
WHEN RW_DATA.LINE = '5' THEN
IF (MONTHDIFF > 2) THEN
UPDATE CHECKIFSOLD
SET STATUS =
(SELECT ID
FROM CHECK_STATUSES
WHERE DESCRIPTION = 'PRODUCT OLDER THAN 2 MONTHS'
)
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
END IF;
END CASE;
= RW_DATA.SERIAL;
END IF;
/*DBMS_OUTPUT.PUT_LINE(rw_data.PRODUCT || ' ' || rw_data.SERIAL || ' ' ||
'Other Operation');*/
EXCEPTION
WHEN NO_DATA_FOUND THEN
/*DBMS_OUTPUT.PUT_LINE(RW_DATA.PRODUCT || ' ' || RW_DATA.SERIAL || ' ' ||
'NOT SOLD');*/
UPDATE CHECKIFSOLD
SET SOLDORREPACK = 0,
LASTCHECK
= sysdate
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
/*CHECK IF THE PRODUCTS THAT ARE NOT SOLD OR Y01 ENTERED IN THE TRANSACT2W
H OR TRANSACT2WHL3*/
IF RW_DATA.LINE = '3' or RW_DATA.LINE = '6' THEN
SELECT COUNT(LINE)
INTO ISINT2WHL3
FROM SORTING.TRANSACT2WHL3
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
IF ISINT2WHL3 > 0 THEN
UPDATE CHECKIFSOLD SET SOLDORREPACK = 3, STATUS = (SELECT ID FROM
CHECK_STATUSES WHERE DESCRIPTION = 'PRODUCT INSERTED NORMAL IN WH') WHERE PRODUC
T = RW_DATA.PRODUCT AND SERIAL = RW_DATA.SERIAL AND SOLDORREPACK = 0;
END IF;
ELSE
SELECT COUNT(LINE)
INTO ISINT2WH
FROM SORTING.TRANSACT2WH
WHERE PRODUCT = RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
IF ISINT2WH > 0 THEN
UPDATE CHECKIFSOLD SET SOLDORREPACK = 3, STATUS = (SELECT ID FROM
CHECK_STATUSES WHERE DESCRIPTION = 'PRODUCT INSERTED NORMAL IN WH') WHERE PRODUC
T = RW_DATA.PRODUCT AND SERIAL = RW_DATA.SERIAL AND SOLDORREPACK = 0;
END IF;
END IF;
/* WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(RW_DATA.PRODUCT || ' ' || RW_DATA.SERIAL || ' ' || 'E
RROR');*/
END;
EXIT
WHEN RW%NOTFOUND;
END LOOP;
CLOSE RW;
COMMIT;
END CK_IFSOLD;
create or replace
PROCEDURE CK_INSERTCKIFSOLD(
iLINE
IN NUMBER ,
iPRODUCT IN VARCHAR2 ,
iSERIAL IN VARCHAR2 ,
iSAPDATE IN VARCHAR2 )
AS
SELROWS NUMBER;
BEGIN
SET transaction name 'CK_INSERT_IN_CHECKIFSOLD';
SELECT COUNT(LINE)
INTO SELROWS
FROM SORTING.CHECKIFSOLD
WHERE PRODUCT = iPRODUCT
AND SERIAL
= iSERIAL;
IF SELROWS = 0 THEN
INSERT
INTO SORTING.CHECKIFSOLD
(
LINE,
PRODUCT,
SERIAL,
SAPDATE,
ABSOPERATIONDATE
)
VALUES
(
iLINE,
iPRODUCT,
iSERIAL,
TO_DATE(iSAPDATE,'YYYY-MM-DD HH24:MI:SS'),
SYSDATE
);
END IF;
COMMIT;
END CK_INSERTCKIFSOLD;
create or replace
PROCEDURE
"CK_PRODUCT" (mPRODUCT IN VARCHAR,mSERIAL IN VARCHAR,lLine I
N INT)
IS
sbPRODUCT VARCHAR(15):='';
sbSERIAL VARCHAR(20):='';
shPRODUCT VARCHAR(15):='';
shSERIAL VARCHAR(20):='';
ssPRODUCT VARCHAR(15):='';
ssSERIAL VARCHAR(20):='';
ERR_PRODUCT EXCEPTION;
ERR_SERIAL EXCEPTION;
ERR_LINENO EXCEPTION;
BEGIN
IF TRIM(mPRODUCT)='' OR mPRODUCT IS NULL THEN
RAISE ERR_PRODUCT;
END IF;
IF TRIM(mSERIAL)='' OR mSERIAL IS NULL THEN
RAISE ERR_SERIAL;
END IF;
IF nvl(lLine,0)=0 THEN
RAISE ERR_LINENO;
END IF;
SELECT PRODUCT,SERIAL into sbPRODUCT,sbSERIAL from SORTING.SORTINGBUFFER i w
here i.PRODUCT=mPRODUCT AND i.SERIAL=mSERIAL;
SELECT PRODUCT,SERIAL into shPRODUCT,shSERIAL from SORTING.SORTINGHISTORY i
where i.PRODUCT=mPRODUCT AND i.SERIAL=mSERIAL;
SELECT PRODUCT,SERIAL into ssPRODUCT,ssSERIAL from SORTING.SORTING_STATUS i
where i.PRODUCT=mPRODUCT AND i.SERIAL=mSERIAL;
IF TRIM(sbPRODUCT)<>'' THEN /*If the records exist just update and let sor
ting system to continue */
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 where PRODUCT=mPRODUCT AND SER
IAL=mSERIAL;
ELSE
/*Check existing of serials into history and status, because anyhow is n
ot in sorting buffer*/
IF TRIM(shPRODUCT)='' AND TRIM(ssPRODUCT)='' THEN /*is not finding any
where just insert into buffer and let the sorting system to continue*/
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, S
TATUS) VALUES(mPRODUCT, mSERIAL, lLine, SYSDATE, 0);
ELSE
IF TRIM(shPRODUCT)<>'' AND TRIM(ssPRODUCT)='' THEN
UPDATE SORTING.SORTINGHISTORY SET PACKTIME=SYSDATE, STATUS=1 WH
ERE PRODUCT=mPRODUCT AND SERIAL=mSERIAL;
INSERT INTO SORTING.SORTING_STATUS(PRODUCT, SERIAL, STATUS) VALU
ES(mPRODUCT, mSERIAL, '1;');
ELSE
IF TRIM(shPRODUCT)='' AND TRIM(ssPRODUCT)<>'' THEN
INSERT INTO SORTING.SORTINGHISTORY(PRODUCT, SERIAL, LINE, LO
CATION, PROTIME, PACKTIME, SORTTIME, SORTLOC, GROUPTIME, GROUPLOC, STATUS)
VALUES(mPRODUCT, mSERIAL, 0, 0, SYSDATE, SYSDATE, NULL, 0, N
ULL, 0, 0);
UPDATE SORTING.SORTING_STATUS SET STATUS=STATUS || '1;' WHER
E PRODUCT=mPRODUCT AND SERIAL=mSERIAL;
ELSE
UPDATE SORTING.SORTINGHISTORY SET PACKTIME=SYSDATE, STATUS=
1 WHERE PRODUCT=mPRODUCT AND SERIAL=mSERIAL;
UPDATE SORTING.SORTING_STATUS SET STATUS=STATUS || '1;' WHER
E PRODUCT=mPRODUCT AND SERIAL=mSERIAL;
END IF;
END IF;
END IF;
END IF;
--DBMS_OUTPUT.PUT_LINE('OK_ST');
COMMIT;
EXCEPTION
WHEN ERR_PRODUCT THEN raise_application_error(-20100, 'IS NOT PRODUCT');
WHEN ERR_SERIAL THEN raise_application_error(-20200, 'IS NOT SERIAL');
WHEN ERR_LINENO THEN raise_application_error(-20300, 'IS NOT PRODUCTION
LINE');
END;
create or replace
PROCEDURE
IS
lCount INT:=0;
BEGIN
IF MYARG=1 THEN
FOR cur_rec IN (SELECT i.PRODUCT,i.SERIAL,i.LOCATION,x.STATUS FROM SORTI
NG.SORTINGBUFFER i,SORTING.SORTING_STATUS x
WHERE i.PRODUCT=x.PRODUCT and i.SERIAL=x.SERIAL AND RPAD(i.STATUS,2)
IN ('10','20','30','50','60') AND TO_DATE(SYSDATE,'YYYY-MM-DD')>TO_DATE(i.TIME,
'YYYY-MM-DD'))
LOOP
INSERT INTO SORTING.TRANSACT2WH(MUSER, PLANT, LINE, PRODUCT, SERIAL,
PRODDATE, TRANSFER, TRANSF_DATE, IDTRANSACT, DOC_NO, WHADDR, PRODUCTCLASS)
VALUES('ROOT', 'ROGP',cur_rec.LOCATION,cur_rec.PRODUCT, cur_rec.SERI
AL, SYSDATE, 0, SYSDATE, 0, '', '', '');
UPDATE SORTING.SORTING_STATUS SET STATUS=STATUS || ';90' WHERE PRODU
CT=cur_rec.PRODUCT AND SERIAL=cur_rec.SERIAL;
DELETE FROM SORTING.SORTINGBUFFER WHERE PRODUCT=cur_rec.PRODUCT AND
SERIAL=cur_rec.SERIAL;
DBMS_OUTPUT.PUT_LINE(cur_rec.PRODUCT || ' ' || cur_rec.SERIAL || ' '
|| cur_rec.LOCATION || ' ' || cur_rec.STATUS );
lCount:=lCount+1;
END LOOP;
ELSE
FOR cur_rec IN (SELECT i.PRODUCT,i.SERIAL,i.LOCATION,x.STATUS FROM SORTI
NG.SORTINGBUFFER i,SORTING.SORTING_STATUS x
WHERE i.PRODUCT=x.PRODUCT and i.SERIAL=x.SERIAL AND RPAD(i.STATUS,2)
IN ('-2'))
LOOP
DELETE FROM SORTING.SORTINGBUFFER WHERE PRODUCT=cur_rec.PRODUCT AND
SERIAL=cur_rec.SERIAL;
DBMS_OUTPUT.PUT_LINE(cur_rec.PRODUCT || ' ' || cur_rec.SERIAL || ' '
|| cur_rec.LOCATION || ' ' || cur_rec.STATUS );
lCount:=lCount+1;
END LOOP;
END IF;
COMMIT;
DBMS_OUTPUT.PUT_LINE('TOTAL IN PROCESS : ' || lCount);
END;
create or replace
PROCEDURE ENDYEARSOLDCHECK AS
DCNO
VARCHAR2(15);
I NUMBER := 0;
CURSOR RW
IS
SELECT PRODUCT,SERIAL FROM TRANSACT2WH WHERE DOC_NO IS NULL;
RW_DATA RW%ROWTYPE;
DATA_FOUND EXCEPTION;
BEGIN
SET transaction name 'ENDOFYEAR';
OPEN RW;
LOOP
FETCH RW INTO RW_DATA;
BEGIN
SELECT DOCUMENT_NO
INTO DCNO
FROM EPIC.NB_MASTER_BARCODE_ARCTIC@EPIC_LINK
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL_NUMBER = RW_DATA.SERIAL
AND DATETIME
=
(SELECT MAX(DATETIME)
FROM EPIC.NB_MASTER_BARCODE_ARCTIC@EPIC_LINK
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL_NUMBER = RW_DATA.SERIAL
);
RAISE DATA_FOUND;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN DATA_FOUND THEN
IF LPAD(DCNO,3) = '410' THEN
/* The product is sold */
UPDATE TRANSACT2WH
SET DOC_NO = DCNO
WHERE PRODUCT
= RW_DATA.PRODUCT
AND SERIAL
= RW_DATA.SERIAL;
COMMIT;
END IF;
/* WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(RW_DATA.PRODUCT || ' ' || RW_DATA.SERIAL || ' ' || 'E
RROR');*/
END;
EXIT
WHEN RW%NOTFOUND;
END LOOP;
CLOSE RW;
COMMIT;
END ENDYEARSOLDCHECK;
create or replace
PROCEDURE
INSERTBUFFERTOTRANSACT AS
TODATE VARCHAR2(20):=TO_CHAR(SYSDATE-1,'YYYY-MM-DD');
FROMDATE VARCHAR2(20):=TO_CHAR(trunc(SYSDATE, 'YYYY'),'YYYY-MM-DD');
CURSOR RW IS SELECT location, product, serial, TO_CHAR(TIME,'YYYY-MM-DD HH
24:MI:SS') TIME, TO_CHAR(SAPDATE,'YYYY-MM-DD HH24:MI:SS') SAPDATE
FROM sortingbufferl3
WHERE TO_CHAR(SAPDATE,'YYYY-MM-DD') BETWEEN FROMDATE AND TODATE AND (Status
= 9 or Status=-4);
RW_DATA RW%ROWTYPE;
BEGIN
sorting.sendtoemailfrombuffer;
SET transaction name 'INSERT_BUFFER_IN_T2WHL3';
IF TODATE = TO_CHAR(SYSDATE,'YYYY-MM-DD') THEN
RETURN;
END IF;
OPEN RW;
LOOP
FETCH RW INTO RW_DATA;
EXIT WHEN RW%NOTFOUND;
BEGIN
INSERT
INTO TRANSACT2WHL3
(
MUSER,
PLANT,
LINE,
PRODUCT,
SERIAL,
PRODDATE,
SAPDATE,
REPACK,
BF,
TR
)
VALUES
(
'SORTING' ,
'ROGP',
RW_DATA.LOCATION,
RW_DATA.PRODUCT,
RW_DATA.SERIAL,
to_date(RW_DATA.TIME,'YYYY-MM-DD HH24:MI:SS'),
to_date(RW_DATA.SAPDATE,'YYYY-MM-DD HH24:MI:SS'),
0,1,1
);
DELETE
FROM sortingbufferl3
WHERE product = RW_DATA.PRODUCT
AND serial
= RW_DATA.SERIAL;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EROARE');
END;
END LOOP;
CLOSE RW;
END INSERTBUFFERTOTRANSACT;
create or replace
PROCEDURE INSERTINTOT2WH(
STAT
IN NUMBER ,
FROMDATE IN VARCHAR2 ,
TODATE IN VARCHAR2 )
AS
CURSOR RW
IS
SELECT location,
product,
serial,
TO_CHAR(TIME,'YYYY-MM-DD HH24:MI:SS') TIME,
TO_CHAR(SAPDATE,'YYYY-MM-DD HH24:MI:SS') SAPDATE
FROM sortingbufferl3
WHERE TO_CHAR(SAPDATE,'YYYY-MM-DD') BETWEEN FROMDATE AND TODATE
AND Status = STAT ;
RW_DATA RW%ROWTYPE;
BEGIN
SET transaction name 'INSERT_IN_T2WHL3';
IF TODATE = TO_CHAR(SYSDATE,'YYYY-MM-DD') THEN
RETURN;
END IF;
OPEN RW;
LOOP
FETCH RW INTO RW_DATA;
EXIT WHEN RW%NOTFOUND;
BEGIN
INSERT
INTO TRANSACT2WHL3
(
MUSER,
PLANT,
LINE,
PRODUCT,
SERIAL,
PRODDATE,
SAPDATE,
REPACK,
BF,
TR
)
VALUES
(
'SORTING' ,
'ROGP',
RW_DATA.LOCATION,
RW_DATA.PRODUCT,
RW_DATA.SERIAL,
to_date(RW_DATA.TIME,'YYYY-MM-DD HH24:MI:SS'),
to_date(RW_DATA.SAPDATE,'YYYY-MM-DD HH24:MI:SS'),
0,1,1
);
DELETE
FROM sortingbufferl3
WHERE product = RW_DATA.PRODUCT
AND serial
= RW_DATA.SERIAL;
DBMS_OUTPUT.PUT_LINE('EXECUTAT');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EROARE');
END;
END LOOP;
CLOSE RW;
END INSERTINTOT2WH;
create or replace
PROCEDURE KILLSESSION (S_SQLID IN VARCHAR2 ) AS
BEGIN
for rec in (SELECT sid,serial#
FROM v$session
WHERE status = 'ACTIVE'
AND username ='NCMAIN'
AND sql_id =S_SQLID ) loop
execute immediate 'Alter System Kill Session '''|| rec.Sid || ',' || rec.Serial#
|| ''' IMMEDIATE';
end loop;
END KILLSESSION;
create or replace
PROCEDURE
IS
BEGIN
EXECUTE IMMEDIATE 'select * from SORTINGHISTORY where ROWNUM<100';
END;
create or replace
PROCEDURE
"PROC_E2" (iMATERIAL IN VARCHAR,iSERIAL VARCHAR,pLine IN NUM
BER,lSTATUS IN NUMBER)
IS
BEGIN
SET TRANSACTION NAME 'E2';
IF lSTATUS=0 THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, STATU
S) VALUES(iMATERIAL,iSERIAL,pLine, SYSDATE,lSTATUS);
/*DBMS_OUTPUT.PUT_LINE('INSERT IsOnSortBF=1 ');*/
ELSE
UPDATE SORTING.SORTINGBUFFER SET STATUS=-2 WHERE PRODUCT=iMATERIAL AND S
ERIAL=iSERIAL;
/*DBMS_OUTPUT.PUT_LINE('UPDATE IsOnSortBF=1 ');*/
END IF;
COMMIT;
END;
create or replace
PROCEDURE
"PROC_E2_L3" (iMATERIAL IN VARCHAR,iSERIAL VARCHAR,pLine IN
NUMBER,lSTATUS IN NUMBER)
IS
BEGIN
SET TRANSACTION NAME 'E2_L3';
IF lSTATUS=0 THEN
INSERT INTO SORTING.SORTINGBUFFERL3(PRODUCT, SERIAL, LOCATION, TIME,STAT
US) VALUES(iMATERIAL,iSERIAL,pLine, SYSDATE,lSTATUS);
/*DBMS_OUTPUT.PUT_LINE('INSERT IsOnSortBF=1 ');*/
ELSE
UPDATE SORTING.SORTINGBUFFERL3 SET STATUS=-2 WHERE PRODUCT=iMATERIAL AND
SERIAL=iSERIAL;
/*DBMS_OUTPUT.PUT_LINE('UPDATE IsOnSortBF=1 ');*/
END IF;
COMMIT;
END;
create or replace
PROCEDURE PROC_REPORTSERIAL(mPRODUCT IN VARCHAR,mSERIAL IN VARCHAR,mLine IN INT)
IS
num INTEGER(15):=0;
ERR_PRODUCT EXCEPTION;
ERR_SERIAL EXCEPTION;
ERR_LINENO EXCEPTION;
BEGIN
IF TRIM(mPRODUCT)='' OR mPRODUCT IS NULL THEN
RAISE ERR_PRODUCT;
END IF;
IF TRIM(mSERIAL)='' OR mSERIAL IS NULL THEN
RAISE ERR_SERIAL;
END IF;
IF nvl(mLine,0)=0 THEN
RAISE ERR_LINENO;
END IF;
/*
IF SERIAL IS ON TRANSACT2WH THEN INSERT INTO SORTING_BUFFER with 3 STATU
S
IF SERIAL IS ON SORTING_BUFFER THEN UPDATE SORTINGHISTORY table in the R
EPACK field with n:=n+1
AND in SORTINGBUFFER the STATUS field should be 1
*/
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.SORTINGBUFFER
z WHERE z.PRODUCT=iMATERIAL AND z.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=1;
END;
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.SORTINGHISTOR
Y z WHERE z.PRODUCT=iMATERIAL AND z.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=WSTAT+2;
END;
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.TRANSACT2WH i
WHERE i.PRODUCT=iMATERIAL AND i.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=WSTAT+4;
END;
SET TRANSACTION NAME 'E3';
CASE
WHEN WSTAT=7 OR WSTAT=5 THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, STATU
S) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 1);
IF WSTAT=7 THEN
UPDATE SORTING.SORTINGHISTORY SET REPACK=REPACK+1 WHERE PRODUCT=iMAT
ERIAL AND SERIAL=iSERIAL;
END IF;
WHEN WSTAT=6 OR WSTAT=4 THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
WHEN WSTAT=3 OR WSTAT=1 THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, STATU
S) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 3);
WHEN WSTAT=2 OR WSTAT=0 THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=3 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
END CASE;
/*
CASE
CASE
WHEN WSTAT=7 OR WSTAT=5 THEN
INSERT INTO SORTING.SORTINGBUFFERL3(PRODUCT, SERIAL, LOCATION, TIME, STA
TUS) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 1);
IF WSTAT=7 THEN
UPDATE SORTING.SORTINGHISTORY SET REPACK=REPACK+1 WHERE PRODUCT=iMAT
ERIAL AND SERIAL=iSERIAL;
END IF;
WHEN WSTAT=6 OR WSTAT=4 THEN
UPDATE SORTING.SORTINGBUFFERL3 SET STATUS=1 WHERE PRODUCT=iMATERIAL AND
SERIAL=iSERIAL;
WHEN WSTAT=3 OR WSTAT=1 THEN
INSERT INTO SORTING.SORTINGBUFFERL3(PRODUCT, SERIAL, LOCATION, TIME, STA
TUS) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 3);
WHEN WSTAT=2 OR WSTAT=0 THEN
UPDATE SORTING.SORTINGBUFFERL3 SET STATUS=3 WHERE PRODUCT=iMATERIAL AND
SERIAL=iSERIAL;
END CASE;
/*
CASE
WHEN WSTAT = 7 OR WSTAT = 4 OR WSTAT=6 OR WSTAT = 1
THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
IF SQL%NOTFOUND THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, S
TATUS) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 3);
END IF;
ELSE
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
END CASE;
*/
COMMIT;
END;
create or replace
PROCEDURE
"PROC_STATUS01" (iMATERIAL IN VARCHAR,iSERIAL VARCHAR,pLine
IN NUMBER,sDATE IN VARCHAR)
IS
s_SERIAL VARCHAR(12):='';
s_PRODUCT VARCHAR(10):='';
WSTAT INTEGER(1):=0;
mSTATUS INTEGER(3):=-1;
BEGIN
/*
IF SERIAL IS ON TRANSACT2WH THEN INSERT INTO SORTING_BUFFER with 3 STATU
S
IF SERIAL IS ON SORTING_BUFFER THEN UPDATE SORTINGHISTORY table in the R
EPACK field with n:=n+1
AND in SORTINGBUFFER the STATUS field should be 1
*/
/*
BEGIN
IF pLine=5 THEN
return;
END IF;
END;
*/
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.SORTINGBUFFER
z WHERE z.PRODUCT=iMATERIAL AND z.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=1;
END;
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.SORTINGHISTOR
Y z WHERE z.PRODUCT=iMATERIAL AND z.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=WSTAT+2;
END;
BEGIN
SELECT PRODUCT,SERIAL INTO s_PRODUCT,s_SERIAL FROM SORTING.TRANSACT2WH i
WHERE i.PRODUCT=iMATERIAL AND i.SERIAL=iSERIAL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
WSTAT:=WSTAT+4;
END;
SET TRANSACTION NAME 'E3';
CASE
WHEN WSTAT=7 OR WSTAT=5 THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME,SAPDAT
E, STATUS) VALUES(iMATERIAL, iSERIAL, pLine,SYSDATE, TO_DATE(sDATE,'DD-MM-YYYY H
H24:MI:SS'), 1);
IF WSTAT=7 THEN
UPDATE SORTING.SORTINGHISTORY SET REPACK=REPACK+1 WHERE PRODUCT=iMAT
ERIAL AND SERIAL=iSERIAL;
END IF;
WHEN WSTAT=6 OR WSTAT=4 THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=1,SAPDATE=TO_DATE(sDATE,'DD-MM-Y
YYY HH24:MI:SS') WHERE PRODUCT=iMATERIAL AND SERIAL=iSERIAL;
WHEN WSTAT=3 OR WSTAT=1 THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME,SAPDAT
E, STATUS) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE,TO_DATE(sDATE,'DD-MM-YYYY H
H24:MI:SS'), 3);
WHEN WSTAT=2 OR WSTAT=0 THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=3 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
END CASE;
/*
CASE
/*
CASE
WHEN WSTAT = 7 OR WSTAT = 4 OR WSTAT=6 OR WSTAT = 1
THEN
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
IF SQL%NOTFOUND THEN
INSERT INTO SORTING.SORTINGBUFFER(PRODUCT, SERIAL, LOCATION, TIME, S
TATUS) VALUES(iMATERIAL, iSERIAL, pLine, SYSDATE, 3);
END IF;
ELSE
UPDATE SORTING.SORTINGBUFFER SET STATUS=1 WHERE PRODUCT=iMATERIAL AND SE
RIAL=iSERIAL;
END CASE;
*/
COMMIT;
END;
create or replace
Procedure REPO2ARCELIK
(
FROMDATE IN VARCHAR2
,TODATE IN VARCHAR2
,LINENO IN NUMBER
,TARGETQTY IN NUMBER
,TIMEOFFSET IN NUMBER DEFAULT 0
,io_cursor IN OUT sys_refcursor
) AS
MYDATETIME DATE:=SYSDATE;
MY_PRODUCT VARCHAR2(22);
MY_SERIAL VARCHAR2(22);
MY_COUNT NUMBER;
CURSOR CURSOR_ IS select PRODDATE,PRODUCT,SERIAL from TRANSACT2WH where PRODDATE
>=TO_DATE(FROMDATE,'YYYY-MM-DD HH24:MI:SS');
CURSOR CURSOR_L3 IS select PRODDATE from TRANSACT2WHL3 where PRODDATE>=TO_DATE(F
ROMDATE,'YYYY-MM-DD HH24:MI:SS');
BEGIN
/*ActualProduction = (lmCurrentMinute - SHIFT_START_WORK - BREAK_SO_FAR) / (PR
ODUCTION_PLAN.mBrutDurationMin - PRODUCTION_PLAN.mTotalBreakMin) * PRODUCTION_PL
AN.mQTYTarget*/
for rec IN (SELECT COUNT(*) as MyCount from TRANSACT2WH where PRODDATE>=TO_DA
TE(FROMDATE,'YYYY-MM-DD HH24:MI:SS'))
LOOP
MY_COUNT:=rec.MyCount;
END LOOP;
SYS.DBMS_OUTPUT.ENABLE(MY_COUNT*128);
OPEN CURSOR_ ;
LOOP
FETCH CURSOR_ INTO MYDATETIME,MY_PRODUCT,MY_SERIAL;
SYS.DBMS_OUTPUT.PUT_LINE(TO_CHAR(MYDATETIME,'YYYY-MM-DD HH24:MI:SS') ||
' ' || MY_PRODUCT || ' ' || MY_SERIAL || ' ' || CURSOR_%ROWCOUNT || ' ' || MY_CO
UNT);
EXIT WHEN CURSOR_%NOTFOUND;
END LOOP;
CLOSE CURSOR_;
COMMIT;
END REPO2ARCELIK;
create or replace
PROCEDURE REPORT2ARCELIK (
FROMDATE IN VARCHAR2
,ACTUALTIME IN VARCHAR2
,LINENO IN NUMBER
,TARGETQTY IN NUMBER
,BREAKSOFAR IN NUMBER
,TIMEOFFSET IN NUMBER DEFAULT 0
,io_cursor IN OUT sys_refcursor
) AS
MYDATETIME DATE:=TO_DATE(ACTUALTIME,'YYYY-MM-DD HH24:MI:SS');
MY_PRODUCT VARCHAR2(22):='';
MY_SERIAL VARCHAR2(22):='';
MY_COUNT NUMBER:=0;
MYSHIFT NUMBER:=0;
STARTSHIFT VARCHAR(22):='';
MYDATE VARCHAR(32):='';
M NUMBER(10,4):=0;
N NUMBER(10,4):=0;
AQ NUMBER(10,6):=0;
MYHOUR NUMBER:=0;
MYMINUTE NUMBER:=0;
STARTSHIFTMINUTE NUMBER:=0;
TOTALSHIFTTIME NUMBER:=0;
TOTALBREAKTIME NUMBER:=0;
BEGIN
SELECT TO_NUMBER(TO_CHAR(MYDATETIME ,'HH24')) INTO MYHOUR FROM DUAL;
SELECT TO_NUMBER(TO_CHAR(MYDATETIME ,'MI')) INTO MYMINUTE FROM DUAL;
MYSHIFT:=GIVE_SHIFT(MYDATETIME,'ARCTIC');
/*StarShift time according with ARCTIC datetime*/
IF MYSHIFT=1 THEN
STARTSHIFT:=' 00:00:00';
STARTSHIFTMINUTE:=0;
TOTALSHIFTTIME:=510;
TOTALBREAKTIME:=50;
ELSIF MYSHIFT=2 THEN
STARTSHIFT:=' 08:30:00';
STARTSHIFTMINUTE:=510;
TOTALSHIFTTIME:=510;
TOTALBREAKTIME:=50;
ELSE
STARTSHIFT:=' 17:00:00';
STARTSHIFTMINUTE:=1020;
TOTALSHIFTTIME:=420;
TOTALBREAKTIME:=40;
END IF;
/*
SYS.DBMS_OUTPUT.ENABLE(50000);
MYDATE:=CONCAT(FROMDATE,STARTSHIFT);
SYS.DBMS_OUTPUT.PUT_LINE(MYDATE);
*/
M:=((MYHOUR*60)+MYMINUTE)-STARTSHIFTMINUTE-BREAKSOFAR;
N:=TOTALSHIFTTIME-TOTALBREAKTIME;
AQ:=M/N*TARGETQTY;
IF LINENO=3 THEN
OPEN io_cursor FOR select TO_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD') as TA
RIH,'ROGP' as ISLETME,'PL3' as HAT,
CAST(GIVE_SHIFT(PRODDATE - TIMEOFFSET/1440,'ARCTIC') as INTEGER) as VARDYIA,
CAST(TARGETQTY as INTEGER)as V_HEDEF,CAST(AQ as INTEGER) as A_HEDEF,COUNT(*) as
FIILI
from TRANSACT2WHL3
/*where BF=6 AND TR=6 AND PRODDATE>=TO_DATE(FROMDATE,'YYYY
-MM-DD HH24:MI:SS') */
where BF=6 AND TR=6 AND PRODDATE - TIMEOFFSET/1440 >=TO_DA
TE(CONCAT(SUBSTR(ACTUALTIME,0,10),STARTSHIFT),'YYYY-MM-DD HH24:MI:SS')
AND LINE IN (3,6)
group by GIVE_SHIFT(PRODDATE - TIMEOFFSET/1440,'ARCTIC'),T
O_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD')
order by TO_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD');
ELSE
OPEN io_cursor FOR select TO_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD') as TA
RIH,'ROGP' as ISLETME,CONCAT('PL',LINE) as HAT,
CAST(GIVE_SHIFT(PRODDATE - TIMEOFFSET/1440,'ARCTIC') as INTEGER) as VARDYIA,
CAST(TARGETQTY as INTEGER) as V_HEDEF,CAST(AQ as INTEGER) as A_HEDEF,COUNT(*) as
FIILI
from TRANSACT2WH
/*where BF=6 AND TR=6 AND PRODDATE>=TO_DATE(FROMDATE,'YYYY
-MM-DD HH24:MI:SS') */
where BF=6 AND TR=6 AND PRODDATE - TIMEOFFSET/1440 >=TO_DA
TE(CONCAT(SUBSTR(ACTUALTIME,0,10),STARTSHIFT),'YYYY-MM-DD HH24:MI:SS')
AND LINE=LINENO
group by LINE,GIVE_SHIFT(PRODDATE - TIMEOFFSET/1440,'ARCTI
C'),TO_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD')
order by TO_CHAR(PRODDATE-TIMEOFFSET/1440,'YYYYMMDD'),LINE
;
END IF;
END REPORT2ARCELIK;
create or replace
PROCEDURE SENDTOEMAILFROMBUFFER AS
v_From
VARCHAR2(80) := '[email protected]';
v_Recipient1 VARCHAR2(80) := '[email protected]';
v_Recipient2 VARCHAR2(80) := '[email protected]';
v_Recipient3 VARCHAR2(80) := '[email protected]';
v_Recipient4 VARCHAR2(80) := '[email protected]';
v_Subject VARCHAR2(80) := 'Buffer LINE3';
v_Mail_Host VARCHAR2(30) := 'arsmtp.arcelik.com';
v_Mail_Conn utl_smtp.Connection;
crlf
VARCHAR2(2) := chr(13)||chr(10);
v_count VARCHAR2(30);
v_count1 VARCHAR2(30);
BEGIN
select count(*) into v_count from sortingbufferl3 where STATUS=9;
select count(*) into v_count1 from sortingbufferl3 where STATUS=-4;
v_Mail_Conn := utl_smtp.Open_Connection(v_Mail_Host, 25);
utl_smtp.Helo(v_Mail_Conn, v_Mail_Host);
utl_smtp.Mail(v_Mail_Conn, v_From);
utl_smtp.Rcpt(v_Mail_Conn, v_Recipient1);
utl_smtp.Rcpt(v_Mail_Conn, v_Recipient2);
utl_smtp.Rcpt(v_Mail_Conn, v_Recipient3);
utl_smtp.Rcpt(v_Mail_Conn, v_Recipient4);
utl_smtp.Data(v_Mail_Conn,
'Date: ' || to_char(sysdate, 'Dy, DD Mon YYYY hh24:mi:ss') || crlf ||
'From: ' || v_From || crlf ||
'Subject: '|| v_Subject || crlf ||
'To: '
|| v_Recipient1 || crlf ||
'To: '
|| v_Recipient2 || crlf ||
'To: '
|| v_Recipient3 || crlf ||
'To: '
|| v_Recipient4 || crlf ||
crlf ||
'Number of records from Buffer LINE3 and LINE6 with'|| crlf ||
-- Messa
ge body
''|| 'STATUS=9: '|| v_count|| crlf ||
''|| 'STATUS=-4: '|| v_count1|| crlf
--'more message text'|| crlf
);
utl_smtp.Quit(v_mail_conn);
EXCEPTION
WHEN utl_smtp.Transient_Error OR utl_smtp.Permanent_Error then
raise_application_error(-20000, 'Unable to send mail: '||sqlerrm);
NULL;
END SENDTOEMAILFROMBUFFER;
create or replace
PROCEDURE
"SHOWMEDOUBLE"(mARG IN NUMBER)
IS
m_PRODUCT
VARCHAR2(20);
m_SERIAL
VARCHAR2(20);
m_DOUBLE
NUMBER;
m_COUNT
NUMBER:=0;
CURSOR C1 IS select PRODUCT from SORTING.SORTINGHISTORY group by PRODUCT;
BEGIN
--select PRODUCT INTO m_PRODUCT from SORTING.SORTINGHISTORY group by PRO
DUCT;
DBMS_OUTPUT.ENABLE(10000000);
OPEN C1; -- open the cursor before fetching
LOOP
FETCH c1 INTO m_PRODUCT;
--select m_PRODUCT,m_SERIAL, m_DOUBLE from dual;
--DBMS_OUTPUT.PUT_LINE (m_PRODUCT || ',' || m_SERIAL || ',' ||
m_DOUBLE);
--DBMS_OUTPUT.PUT_LINE (m_PRODUCT);
--insert into SORTING.REPTBL VALUES(m_SERIAL,m_DOUBLE);
EXIT WHEN c1%NOTFOUND;
--DBMS_OUTPUT.PUT_LINE (nvl(m_PRODUCT,'') || ' AS PRODUCT');
--SELECT nvl(SERIAL,''),nvl(COUNT(*),0) into m_SERIAL,m_DOUBLE F
ROM SORTINGHISTORY WHERE PRODUCT=m_PRODUCT group by SERIAL HAVING COUNT(*)>1;
LOOP
SELECT SERIAL,nvl(COUNT(*),0) into m_SERIAL,m_DOUBLE FROM SO
RTINGHISTORY WHERE PRODUCT=m_PRODUCT group by SERIAL HAVING COUNT(*)>1;
EXIT WHEN m_SERIAL IS NULL;
--DBMS_OUTPUT.PUT_LINE (m_PRODUCT || ' ' || nvl(m_SERIAL,'')
|| ',' || nvl(m_DOUBLE,'') || ',' || m_COUNT);
insert into REPTBL1(PRODSERIAL,MCOUNT) VALUES (m_SERIAL,m_DO
UBLE);
--EXECUTE IMMEDIATE 'SELECT SERIAL,COUNT(*) into SORTING.REP
TBL1 FROM SORTINGHISTORY WHERE PRODUCT=' || m_PRODUCT || ' group by SERIAL HAVI
NG COUNT(*)>1';
m_COUNT:=m_COUNT+1;
END LOOP;
--insert into SORTING.REPTBL SELECT nvl(SERIAL,''),nvl(COUNT(*),
0) into m_SERIAL,m_DOUBLE FROM SORTINGHISTORY WHERE PRODUCT=m_PRODUCT group by P
RODUCT,SERIAL;
--IF m_SERIAL IS NOT NULL THEN
-EXECUTE IMMEDIATE 'SELECT SERIAL,COUNT(*) into SORTING.REP
TBL FROM SORTINGHISTORY WHERE PRODUCT=' || m_PRODUCT || ' group by SERIAL HAVING
COUNT(*)>1';
--END IF;
END LOOP;
CLOSE c1;
COMMIT;
END;