Vamos por partes:
- RETURN pertenece a un
STORED FUNCION, no a un STORED PROCEDURE. Tienen una sintaxis similar, pero grandes diferencias: Una función almacenada
sólo puede devolver un único dato y de un sólo tipo, el cual se debe declarar en el prototipo. Además todos los parámetros de una SF son IN.
- Si vas a devolver más de un tipo de datos, sólo puedes usar SP, pero con PHP solamente puedes leer el
result de la ejecución, por lo que deberás estructurar las respuestas posibles y resolverlo en el código del script. Mi sugerencia es que uses valores numéricos para obtener las respuestas y la resolución de los mensajes la hagas en el PHP.
Algo así:
Código MySQL:
Ver original-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
INSERT INTO arribos
(idArribos
, idEmpTransporte
,Direccion
,NumVuelo
, FechaLlegada
, HoraLlegada
, NumPersonas
) VALUES(xidArribo
, xidEmpTransport
,xDireccion
,xnumVuelo
,xfechaLlegada
, xHoraLlegada
, xnumPersonas
); SELECT 'Operacion no Contemplada' Mensaje
;
Prestale atención a un par de cosas:
1) No debes usar DECLARE para declarar variables que tengan
el mismo nombre que las que ya vienen en el prototipo. Es un error. Las variables del prototipo ya existen y pueden ser usadas en cualquier parte del codigo del SP.
2) Si el numero de registro es autogenerado, no tiene ninguna utilidad, y puede ser impreciso, usar MAX(x)+1 para obtener el siguiente,
porque el siguiente puede no ser ese. El auto_increment se controla de otra forma y el próximo ID autogenerado mysql lo obtiene sobre la base de otra metodología. Por eso precisamente existe la función LAST_INSERT_ID(). Si esta devuelve cero, es que no se insertó nada, caso contrario devuelve el valor real del ID generado.