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.