Assigning to and from a variable or parameter named "timestamp" breaks the parser. The declaration itself is OK, it's only the assignment that fails. In the example below, comment back in either assignment and it fails.
create or replace procedure ely_temp
IS
timestamp date;
t date;
BEGIN
null;
-- timestamp := t;
-- t := timestamp;
END;
/