Inicio > MySQL > kiwisoft > procedimiento almacenado el Mysql

procedimiento almacenado el Mysql

Experto:
Usuario:
Fecha: 24/10/2009
Valoración: (4,00 sobre 5) Categoría: MySQL
22/10/2009
jorge_df, usuario preguntando en MySQL
Usuario
Estimado, tengo una duda que me tiene vuelto loco, te explico, tengo una tabla "tabla1" con muchos datos ejemplo de tabla1
campo1   campo2
nkjnknj   20091001
mkmk   20091002
huhuh    20091003
el problema es que por cada campo1 de a tabla1 existe una tabla2 con ese nombre, tablas con nombres aleatorios es decir no tengo un patron para el nombre de las tablas, y por cada una de esas tablas necesito hacer un count(*) es decir un
select count(*) from nkjnknj
mi consulta es :existe alguna forma de recorrer la tabla 1, y pasando como referencia los nombres para que me vaya haciendo el count(*) por cada tabla2????
si me puedes ayudar te lo agradeceria muchisimo..
*******************************
yo he hecho esto,
cree en procediemiento almacenado
CREATE PROCEDURE `revisa` (IN numero varchar(10))
SELECT * from numero
pero al llamarlo "call revisa(mitabla)" pasando el nombre de las tablas que quiero leer me tira error y me dice que no exite la tabla numero, es decir no logra pasar la variable a la consulta select
ojala me pudieras ayudar, estoy desesperado con esto.
23/10/2009
jorge_df, experto respondiendo en MySQL
Experto
Hola:
Si, existe una solución: usar un query dinámico. Sabiendo el nombre de la tabla, construyes un query así:
SET @query = CONCAT('SELECT COUNT(*) FROM ', mitabla, ';');
PREPARE sentencia FROM @query;
EXECUTE sentencia;
De esta forma, puedes llamar a ese query cada vez que quieras con el nombre de "mitabla" que te interese.
Espero haberte ayudado.
Saludos.
23/10/2009
jorge_df, usuario preguntando en MySQL
Usuario
Hola disculpa, me quedaron unas dudas.
esto funciona en Mysql?
como podria integrar esto en un while, en este caso el 'mitabla' lo pueod dejar como variable???
23/10/2009
jorge_df, experto respondiendo en MySQL
Experto
Hola:
Si, se puede hacer perfectamente dentro de un procedimiento almacenado de mysql.
Para hacer una iteracion, es decir, usar varias veces la misma instruccion usando un conjunto de valores, deberias crear un cursor que te extrayese los nombres de las tablas y usarlos tal y como te comentaba.
En el siguiente enlace tienes un ejemplo de como hacer un cursor y controlar cuando has recorrigo todas sus filas.
Experimenta un poco, prueba a hacer lo que pretendes y ya me cuentas si tienes algún problema.
Espero haberte ayudado.
Saludos.
23/10/2009
jorge_df, experto respondiendo en MySQL
Experto
Hola:
Perdona, se me olvió poner el enlace. Es el siguiente:
http://www.forosdelweb.com/f86/ayuda-cursor-con-mysql-652033/
24/10/2009
jorge_df, usuario preguntando en MySQL
Usuario
Muchas Gracias...me ha sio de muchisima ayuda
saludos..
Enlaces patrocinados