No need to upgrade just because of this procedure!

You can rewrite it in many ways, so that it will work in 8i. One of the possibilities would be (I haven't tested it in any way, so be cautious; neither do I claim it is the most performant solution - it's just one of them):

Code:
CREATE OR REPLACE PROCEDURE xx AS
 CURSOR gethisthdr IS
 SELECT *
 FROM SCHEMA.TABLE H
 WHERE H.STATUS <> 'CANCELLED'
 AND (TRUNC(H.THEDATE) > (SELECT TRUNC(S.THEDATE)
                                     FROM schema1.table1 S
                                     WHERE H.CODE = S.CODE
                                     AND H.ORG||' 1 1' = S.ORG
                                     AND H.ID = S.ID)
      OR NOT EXISTS (SELECT TRUNC(S.THEDATE)
                                     FROM schema1.table1 S
                                     WHERE H.CODE = S.CODE
                                     AND H.ORG||' 1 1' = S.ORG

                                     AND H.ID = S.ID)
    );
BEGIN
 NULL;
END;