MySQL Forums
Forum List  »  Spanish

Re: Parametros de salida en un procedimiento
Posted by: Miguel Perez
Date: March 17, 2008 04:20AM

La ventaja o la diferencia es que el resultado queda en una variable (ya sea de un procedimiento, o una variable de usuario) que puedes utilizar posteriormente en consultas, mientras que si haces SELECT, el resultado es devuelto en un juego de resultados, que es más difícil de explorar en MySQL. Piensa en un procedimiento almacenado que llama a otro para obtener un valor determinado. Con parámetros de salida, simplemente tienes que usar una variable local del procedimiento llamante que recoge el valor que le deja el procedimiento llamado. Si, por el contrario, utilizaras SELECT sin INTO en el procedimiento llamado, tendrías que hacer un cursor en el procedimiento llamante; sería un rollo si sólo quieres obtener un valor.

Aún así, las funciones son aún más cómodas porque se pueden utilizar en expresiones y devuelven un valor que no tienes por qué guardar en una variable. Su problema, sin embargo, es que tal y como está MySQL, las funciones no pueden devolver varios valores, y tienen ciertas serias limitaciones como no soportar recursividad o necesitar ser deterministas o sólo leer SQL si usas el binary log (backups, replicación), mientas que los procedimientos almacenados ya no tienen estas restricciones.

En cuanto a tu segunda pregunta, las variables que empiezan con una arroba, como @a, son las llamadas variables de usuario. Éstas son variables globales a toda tu sesión (independientemente de que las uses desde dentro de rutinas almacenadas), y con existencia únicamente dentro de la misma (se pierden al cerrarla), que no necesitan ser declaradas. Puedes grabarles valores con SET, SELECT INTO o como parámetros de salida en procedimientos, y puedes utilizar su valor en cualquier expresión o seleccionarlo con SELECT.

Un saludo,

Miguel Pérez
Afina Sistemas - Partner de MySQL en España

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: Parametros de salida en un procedimiento
11661
March 17, 2008 04:20AM
3266
July 12, 2008 07:05AM
3155
August 01, 2008 02:18AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.