Hola -thor-:
El uso de parámetros de salida en procedimientos en realidad no es muy distinto a como se hace en SQL Server, aunque tiene pequeñas diferencias:
1. los parámetros de salida se definen en la declaración del procedimiento almacenado, es decir, pones algo como esto:
En este procedimiento se define un parámetro de entrada (p_id) y un parámetro de salida (p_correo).
2.Los parámetros de salida NO SE DECLARAN COMO VARIABLES, es decir NO LLEVAN @ ANTES DEL NOMBRE. El @ sirve para declarar variables locales.
3. La asignación de valores a los parámetros de salida o variables se hace con la cláusula INTO si se el valor proviene de una consulta SELECT.
4. Es importante que los parámetros NO SE LLAMEN IGUAL QUE ALGÚN CAMPO DE TABLA O NOMBRE DE TABLA, puedes poner un prefijo como p_ para diferenciar los parámetros del resto de los objetos de BD's.
Checa este ejemplo, supongamos que tienes una tabla así:
Código MySQL:
Ver original+------+---------------+
| id | correo |
+------+---------------+
+------+---------------+
Lo que hace el procedimiento es buscar el correo para el p_id correspondiente y regresarlo como un parámetro de salida. l para invocar el SP, harías algo así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
mysql
> CALL verifica_correo
(1, @correo
);Query OK, 1 row affected (0.00 sec)
+---------------+
| @correo |
+---------------+
+---------------+
es decir, primero declaras una variable local (ahora sí utilizando el @) que es donde vas a almacenar el valor de salida del SP, después de ejecutar el CALL al procedimiento, la variable @correo contiene lo que se asignó en el procedimiento almacenado.
Si no se encuentra el id en la tabla que se está consultando, entonces se regresa un NULL:
Código MySQL:
Ver originalmysql
> CALL verifica_correo
(4, @correo
);Query OK, 0 rows affected, 1 warning (0.00 sec)
+---------+
| @correo |
+---------+
+---------+
haz la prueba y nos comentas.
Saludos
Leo.