Beuses... no conozco mucho tu sistema... pero no le veo sentido a esta sentencia
SELECT id FROM tbl_buque WHERE num_matricula=p_matricula
Está sin punto y coma, y el que se ejecute, no afecta en nada la función.
Si lo que quieres, es recuperar el id que se acabó de insertar, tendrás que recurrir a una variable record para almacenarlo antes de utilizarlo en la inserción en tbl_renave.
Para ver, el modo de uso, de variables record y como obtener el valor de un campo y asignarlo a una variable, mira el 4to post de este tema
http://www.forosdelweb.com/f99/como-...rigger-702509/
Nos cuentas como te va.