Ich schätze, dass der Specific-Name der Prozedur abweicht? Oder irgendwelche Leicher vorhanden waren und deshalb die Prozedur nicht einfach gelöscht hat.
Wenn du eine komplett neue Prozedur so erstellst und den CREATE OR REPLACE paar mal laufen lässt, sollte er immer die Prozedur korrekt ersetzen.
Wobei ich selbst, wegen genau diesen Problemen, lieber mit einem DROP & CREATE arbeite.

Und was das abschmieren beim DROP angeht, so kann man hier einfach den ERRLVL auf 21 setzen, dann werden diese ignoriert.