pears.DBCleanupOrphanRecentObjects

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

Original SQL

COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."DBCleanupOrphanRecentObjects" IS 
{CREATE FUNCTION DBCleanupOrphanRecentObjects 
 
/* Application Maintained Function / Procedure - DO NOT EDIT*/
 
( IN countordo CHAR(1))
RETURNS INTEGER
BEGIN
  DECLARE @RC INTEGER;
  SET @RC = 0;
  IF countordo = 'C' THEN
    SELECT COUNT(*) INTO @RC FROM RecentObjects WHERE 
     (
    (NOT EXISTS(SELECT * FROM staff WHERE staffid = RecentObjects.staffid)) OR 
     ((objecttype = 'P') AND NOT EXISTS(SELECT * FROM person WHERE personid = RecentObjects.objectid)) OR 
     ((objecttype = 'C') AND NOT EXISTS(SELECT * FROM company WHERE companyid = RecentObjects.objectid)) OR 
     ((objecttype = 'V') AND NOT EXISTS(SELECT * FROM vacancy WHERE vacancyid = RecentObjects.objectid)) OR 
     ((objecttype = 'L') AND NOT EXISTS(SELECT * FROM placement WHERE placementid = RecentObjects.objectid)) OR 
     ((objecttype = 'N') AND NOT EXISTS(SELECT * FROM contactevent WHERE contacteventid = RecentObjects.objectid)) OR 
     ((objecttype = 'R') AND NOT EXISTS(SELECT * FROM progress WHERE progressid = RecentObjects.objectid)) OR 
     ((objecttype = 'E') AND NOT EXISTS(SELECT * FROM employment WHERE employmentid = RecentObjects.objectid)) 
     );
    RETURN @RC
  END IF;
  DELETE FROM RecentObjects WHERE
    NOT EXISTS(SELECT * FROM staff WHERE staffid = RecentObjects.staffid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'P') AND
    NOT EXISTS(SELECT * FROM person WHERE personid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'C') AND
    NOT EXISTS(SELECT * FROM company WHERE companyid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'V') AND
    NOT EXISTS(SELECT * FROM vacancy WHERE vacancyid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'L') AND
    NOT EXISTS(SELECT * FROM placement WHERE placementid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'N') AND
    NOT EXISTS(SELECT * FROM contactevent WHERE contacteventid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'R') AND
    NOT EXISTS(SELECT * FROM progress WHERE progressid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  DELETE FROM RecentObjects WHERE(objecttype = 'E') AND
    NOT EXISTS(SELECT * FROM employment WHERE employmentid = RecentObjects.objectid);
  SET @RC = @RC + (SELECT @@rowcount);
  CALL AuditLog('CLEANUP',NULL,string(@RC,' Unattached Recent Objects deleted '),NULL,NULL);
  RETURN @RC;
  /* ignore type T */
END
}