CREATE OR REPLACE PROCEDURE GETaac001(p_aac001 in varchar2,DAT_TRANSDATE OUT DATE,
TRANSNUM OUT NUMBER,
EXTRANSNUM OUT NUMBER,
PRM_APPCODE OUT NUMBER,
PRM_ERRORMSG OUT VARCHAR2) AS
--3 ????
LASTUPDATEDATE DATE; --??????
LDT_SYSDATE DATE; --????
I_UPDATE NUMBER; --????
N_EXISTS NUMBER;
SI_SYSDATE DATE;
BEGIN
SELECT SYSDATE INTO SI_SYSDATE FROM DEX@TO_center WHERE ROWNUM = 1; --lhong ????????
PRM_APPCODE := 0;
EXTRANSNUM := 0;
SELECT SYSDATE INTO LDT_SYSDATE FROM DUAL; --????
BEGIN
SELECT ENDTIME - 1 / 12
INTO LASTUPDATEDATE
FROM DEX@to_center
WHERE taskid = 'PERSONACCOUNT'
AND CLINETID = '120001';
EXCEPTION
WHEN OTHERS THEN
PRM_APPCODE := -1;
PRM_ERRORMSG := '??personaccount???????!' || SQLERRM;
RETURN;
END;
DAT_TRANSDATE := LASTUPDATEDATE;
SELECT COUNT(1)
INTO TRANSNUM
FROM PERSONACCOUT_DEX@TO_CENTER
-- WHERE AAE036 >= TO_CHAR(LASTUPDATEDATE, 'yyyymmdd');
WHERE aac001=p_aac001 ;
FOR A IN (SELECT aac001,
aab001,
aac002,
UTL_RAW.CAST_TO_VARCHAR2(aac003) aac003,
aac004,
aac005,
aac006,
aac007,
aac008,
aac009,
aac010,
aac011,
aac012,
aac013,
aac014,
aac015,
aae005,
aac019,
aac020,
aic001,
ajc001,
UTL_RAW.CAST_TO_VARCHAR2(AAE011) AAE011,
aae036,
aae006,
aae007,
akc020,
akc021,
akc023,
aic162,
aac021,
akc030,
aac022,
aab060,
aac023,
aab034,
aae130,
aac025,
UTL_RAW.CAST_TO_VARCHAR2(AAE013) AAE013,
zzc001
FROM PERSONACCOUT_DEX@TO_CENTER
WHERE aac001=p_aac001
/* and aac001='019504' */) LOOP
BEGIN
INSERT INTO PERSONACCOUNT
(aac001,
aab001,
aac002,
aac003,
aac004,
aac005,
aac006,
aac007,
aac008,
aac009,
aac010,
aac011,
aac012,
aac013,
aac014,
aac015,
aae005,
aac019,
aac020,
aic001,
ajc001,
AAE011,
aae036,
aae006,
aae007,
akc020,
akc021,
akc023,
aic162,
aac021,
akc030,
aac022,
aab060,
aac023,
aab034,
aae130,
aac025,
AAE013,
zzc001)
VALUES
(A.aac001,
A.aab001,
A.aac002,
A.aac003,
A.aac004,
A.aac005,
A.aac006,
A.aac007,
A.aac008,
A.aac009,
A.aac010,
A.aac011,
A.aac012,
A.aac013,
A.aac014,
A.aac015,
A.aae005,
A.aac019,
A.aac020,
A.aic001,
A.ajc001,
A.AAE011,
A.aae036,
A.aae006,
A.aae007,
A.akc020,
A.akc021,
A.akc023,
A.aic162,
A.aac021,
A.akc030,
A.aac022,
A.aab060,
A.aac023,
A.aab034,
A.aae130,
A.aac025,
A.AAE013,
A.zzc001);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE PERSONACCOUNT
SET aab001=A.aab001,
aac002=A.aac002,
aac003=A.aac003,
aac004=A.aac004,
aac005=A.aac005,
aac006=A.aac006,
aac007=A.aac007,
aac008=A.aac008,
aac009=A.aac009,
aac010=A.aac010,
aac011=A.aac011,
aac012=A.aac012,
aac013=A.aac013,
aac014=A.aac014,
aac015=A.aac015,
aae005=A.aae005,
aac019=A.aac019,
aac020=A.aac020,
aic001=A.aic001,
ajc001=A.ajc001,
AAE011=A.AAE011,
aae036=A.aae036,
aae006=A.aae006,
aae007=A.aae007,
akc020=A.akc020,
akc021=A.akc021,
akc023=A.akc023,
aic162=A.aic162,
aac021=A.aac021,
akc030=A.akc030,
aac022=A.aac022,
aab060=A.aab060,
aac023=A.aac023,
aab034=A.aab034,
aae130=A.aae130,
aac025=A.aac025,
AAE013=A.aae013,
zzc001 =a.zzc001
WHERE AAC001 = A.AAC001;
WHEN OTHERS THEN
PRM_APPCODE := -1;
PRM_ERRORMSG := '??personaccount???,????:' || NVL(A.AAC001, '') ||
',????:' || SQLERRM;
RETURN;
END;
EXTRANSNUM := EXTRANSNUM + 1;
commit;
dbms_output.put_line(A.AAC001);
END LOOP;
BEGIN
UPDATE DEX@to_center
SET begintime = SI_SYSDATE, ENDTIME = SI_SYSDATE --lhong ??
WHERE taskid = 'PERSONACCOUNT'
AND CLINETID = '120001';
EXCEPTION
WHEN OTHERS THEN
PRM_APPCODE := -1;
PRM_ERRORMSG := '??personaccount???????!' || SQLERRM;
RETURN;
END;
end ;