Have been encountering an odd issue. Every now and again, certain
packages of stored procedures just become invalid. I'm aware that
dropping or altering an underlying table would render a package
invalid, but we are doing no such thing...
After banging my head on the wall for a bit I noticed that the two
stored procedures that are experiencing this behavior are procedures
that are called from within another procedure (they're not both
called, one or the other is called depending on criteria). I also came
across something in the newsgroup referring to issues with nested
procs and packages.
My question: is there a proper approach to implpementing nested stored
procedures as to avoid package becoming invalid?
I'm currently running v8, FixPak 4 on AIX. I've included the SQL of
the stored procedures in question. The first procedure, is the main
one (the caller). The other two are the callees.
Thanks AGAIN
PROCEDURE 1
P1: BEGIN
DECLARE intImageCount INTEGER;
DECLARE strSQLString VARCHAR(256);
DECLARE decArchiveRetri evalID DECIMAL(13,0);
SET decArchiveRetri evalID = (SELECT ArchiveRetrieva lID FROM
AIM.AIMRetrieve dItem WHERE AIMRetrievedIte mID =
decAIMRetrieved ItemID);
IF (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) < DATE(CURRENT TIMESTAMP)
THEN
GOTO NOINSERT;
ELSE IF (SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > DATE(CURRENT TIMESTAMP)
THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
ELSE IF
(SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) < CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > DATE(CURRENT TIMESTAMP)
THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
ELSE IF
(SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) IS NULL THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
--ELSE
--RETURN 100;
NOINSERT: RETURN 100;
END IF ;
END IF;
END IF;
END IF;
END
PROCEDURE 2
P1: BEGIN
DECLARE dtExpirationDat e DATE;
IF
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('RIB') THEN
UPDATE AIM.ArchiveRetr ieval SET ExpirationDate = DATE(CURRENT
TIMESTAMP) + 30 DAYS
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('INTRANET', 'CIB') THEN
UPDATE AIM.ArchiveRetr ieval SET ExpirationDate = (AIM.NEXT_BUS_D ATE
(DATE(CURRENT TIMESTAMP),5))
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
END IF;
END IF;
END P1
PROCEDURE 3
P1: BEGIN
IF (SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'O'
THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'D'
AND
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('INTRANET', 'CIB') THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP, ExpirationDate =
(AIM.NEXT_BUS_D ATE (DATE(CURRENT TIMESTAMP),5))
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'D'
AND
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('RIB') THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP, ExpirationDate =
DATE(CURRENT TIMESTAMP) + 30 DAYS
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
END IF;
END IF;
END IF;
END P1
Thanks again for any help...
packages of stored procedures just become invalid. I'm aware that
dropping or altering an underlying table would render a package
invalid, but we are doing no such thing...
After banging my head on the wall for a bit I noticed that the two
stored procedures that are experiencing this behavior are procedures
that are called from within another procedure (they're not both
called, one or the other is called depending on criteria). I also came
across something in the newsgroup referring to issues with nested
procs and packages.
My question: is there a proper approach to implpementing nested stored
procedures as to avoid package becoming invalid?
I'm currently running v8, FixPak 4 on AIX. I've included the SQL of
the stored procedures in question. The first procedure, is the main
one (the caller). The other two are the callees.
Thanks AGAIN
PROCEDURE 1
P1: BEGIN
DECLARE intImageCount INTEGER;
DECLARE strSQLString VARCHAR(256);
DECLARE decArchiveRetri evalID DECIMAL(13,0);
SET decArchiveRetri evalID = (SELECT ArchiveRetrieva lID FROM
AIM.AIMRetrieve dItem WHERE AIMRetrievedIte mID =
decAIMRetrieved ItemID);
IF (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) < DATE(CURRENT TIMESTAMP)
THEN
GOTO NOINSERT;
ELSE IF (SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > DATE(CURRENT TIMESTAMP)
THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
ELSE IF
(SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) < CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > DATE(CURRENT TIMESTAMP)
THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
ELSE IF
(SELECT EstimatedRespon seTime FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) > CURRENT TIMESTAMP
AND (SELECT ExpirationDate FROM AIM.ArchiveRetr ieval WHERE
ArchiveRetrieva lID = decArchiveRetri evalID) IS NULL THEN
UPDATE AIM.AIMRetrieve dItem SET
ResultErrorSeve rity = intResultErrorS everity,
ResultErrorType = strResultErrorT ype,
ResultErrorMess age = strResultErrorM essage,
ImageErrorSever ity = intImageErrorSe verity,
ImageErrorType = strImageErrorTy pe,
ImageErrorMessa ge = strImageErrorMe ssage,
ImageFront = clobImageFront,
ImageFrontSize = intImageFrontSi ze,
ImageFrontType = strImageFrontTy pe,
ImageBack = clobImageBack,
ImageBackSize = intImageBackSiz e,
ImageBackType = strImageBackTyp e
WHERE decAIMRetrieved ItemID = AIMRetrievedIte mID;
SET intImageCount = (SELECT COUNT(*) FROM AIM.AIMRetrieve dItem WHERE
ArchiveRetrieva lID = decArchiveRetri evalID and ImageFront IS NOT
NULL);
IF intImageCount = (SELECT ItemCount FROM AIM.ArchiveRetr ieval
WHERE ArchiveRetrieva lID = decArchiveRetri evalID)
THEN
CALL AIM.UpdateArchi veRetrieval(dec ArchiveRetrieva lID, 1);
ELSE
CALL AIM.UpdateExpir ationDate(decAr chiveRetrievalI D);
END IF;
--ELSE
--RETURN 100;
NOINSERT: RETURN 100;
END IF ;
END IF;
END IF;
END IF;
END
PROCEDURE 2
P1: BEGIN
DECLARE dtExpirationDat e DATE;
IF
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('RIB') THEN
UPDATE AIM.ArchiveRetr ieval SET ExpirationDate = DATE(CURRENT
TIMESTAMP) + 30 DAYS
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('INTRANET', 'CIB') THEN
UPDATE AIM.ArchiveRetr ieval SET ExpirationDate = (AIM.NEXT_BUS_D ATE
(DATE(CURRENT TIMESTAMP),5))
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
END IF;
END IF;
END P1
PROCEDURE 3
P1: BEGIN
IF (SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'O'
THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'D'
AND
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('INTRANET', 'CIB') THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP, ExpirationDate =
(AIM.NEXT_BUS_D ATE (DATE(CURRENT TIMESTAMP),5))
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
ELSE IF
(SELECT
AIM.ARCHIVETYPE .ARCHIVETYPE
FROM
AIM.ARCHIVERETR IEVAL,
AIM.ARCHIVETYPE
WHERE
AIM.ARCHIVETYPE .ARCHIVEID = AIM.ARCHIVERETR IEVAL.ARCHIVEID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) = 'D'
AND
(SELECT
AIM.CHANNEL.CHA NNEL
FROM
AIM.AIMCONNECTI ON,
AIM.CHANNEL,
AIM.CHANNELSESS ION,
AIM.AIMQUERY,
AIM.AIMRETRIEVA L,
AIM.ARCHIVERETR IEVAL
WHERE
AIM.CHANNEL.CHA NNELID = AIM.CHANNELSESS ION.CHANNELID
AND AIM.CHANNELSESS ION.CHANNELSESS IONID =
AIM.AIMCONNECTI ON.CHANNELSESSI ONID
AND AIM.AIMCONNECTI ON.AIMCONNECTIO NID =
AIM.AIMQUERY.AI MCONNECTIONID
AND AIM.AIMQUERY.AI MQUERYID = AIM.AIMRETRIEVA L.AIMQUERYID
AND AIM.AIMRETRIEVA L.AIMRETRIEVALI D =
AIM.ARCHIVERETR IEVAL.AIMRETRIE VALID
AND AIM.ARCHIVERETR IEVAL.ARCHIVERE TRIEVALID =
decArchiveRetri evalID) IN ('RIB') THEN
UPDATE AIM.ArchiveRetr ieval SET StatusID = decStatusID,
ArchiveRetrieva lResponse = CURRENT TIMESTAMP, ExpirationDate =
DATE(CURRENT TIMESTAMP) + 30 DAYS
WHERE ArchiveRetrieva lID = decArchiveRetri evalID;
END IF;
END IF;
END IF;
END P1
Thanks again for any help...
Comment