17/01/2011, 07:41
|
| | Fecha de Ingreso: enero-2011
Mensajes: 10
Antigüedad: 13 años, 11 meses Puntos: 0 | |
Declarar un CURSOR mediante una Sentencia Preparada en MySQL. Buen día,
tengo un Procedimiento Almacenado en el cual necesito declarar un CURSOR mediante una Sentencia Preparada, porque antes armo en una variable un filtro según los parámetros que recibe dicho Procedimiento.
Hago lo siguiente:
1_ Declaro las variables a utilizar.
2_ Asigno con SET dichas variables con los valores de los parámetros recibidos.
3_ Armo la cadena del filtro de la query, asignándola en la variable respectiva.
4_ Armo la Sentencia Preparada donde allí quiero declarar un CURSOR, mediante CONCAT voy armando la cadena de la query con su filtro.
Luego:
PREPARE sentencia_mysql FROM @query_mysql;
5_ Ejecuto la Sentencia Preparada:
EXECUTE sentencia_mysql;
6_ Armo otra Sentencia Preparada para el manejador del Cursor:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET llave = 1;
7_ PREPARE sentencia_del_manejador_mysql FROM @query_mysqlManejador;
8_ Ejecuto la Sentencia Preparada para el HANDLER:
EXECUTE sentencia_del_manejador_mysql;
9_ Sigo con el Procedimiento Almacenado...
Al crear el Procedimiento Almacenado en el Motor MySQL me indica el siguiente error:
#1324 - Undefined CURSOR: CursorExpe
He probado con otros procedimientos almacenados, usando cursores sin utilizar sentencias preparadas y no he tenido inconvenientes. Pero en este caso necesito definir primero el filtro a usar en la query (un SELECT con varias tablas) y luego declarar el cursor.
He leído en muchos foros, en la documentación de MySQL, pero no logro encontrar el error.
Les agradecería que me aclaren si se puede declarar un CURSOR mediante una Sentencia Preparada.
Desde ya muchas gracias. |