Bien, muchas gracias huesos25...
Tenias razón, me faltaba una variable que almacenara el valor que estaba consultando.
Y el punto y coma que mencionas se lo borré sin querer.. :P
Pero en fin; Asi quedo mi función (por si a alguien le hace falta).
Código PHP:
DECLARE
v_flag integer;
BEGIN
IF (EXISTS (SELECT 1 FROM tbl_buque where num_matricula = p_matricula)) THEN
RETURN 'Ya existe un buque con esa matricula';
ELSE
BEGIN
INSERT INTO tbl_buque(id_muelle,id_actividad,id_suministro,nombreusuario,num_matricula,nombre,bandera,capacidad_almacenamiento,eslora,manga,puntal,unidadarqueobruto,totalhp,indicador_suministro)
VALUES (p_idmuelle,p_actividad,p_idsuministro,p_nombreusuario,upper(p_matricula),p_nombre,p_bandera,p_capacidad,p_eslora,p_manga,p_puntal,p_arqueo,p_total,p_indicador);
SELECT INTO v_flag id FROM tbl_buque WHERE num_matricula=upper(p_matricula);
INSERT INTO tbl_renave(id_buque,fecha,lugar)VALUES(v_flag,to_date(p_fecharenave ,'DD/MM/YYYY'),p_lugar);
EXCEPTION
WHEN OTHERS THEN
RETURN 'Ha ocurrido un error al ejecutar la instrucción';
END;
RETURN 'OK';
END IF;
END;