MySQL - sentencia diseñada como parametro en procedure

 
Vista:

sentencia diseñada como parametro en procedure

Publicado por Jorge Urrutia (2 intervenciones) el 18/11/2010 22:57:49
Buenas a todos...

Bueno les comento estoy desarrollando un sistema en java..

en el cual por peticion del cliente se tienen que crear tablas desde el sistema...

ya lo llevo avanzado y tengo unas tablas en las cuales se instancian las nuevas tablas con sus campos indices etc...

en una ventana despues de crear toda la estructura hay un boton generar...

hay creo el strip de create table y lo ejecuto....

lo malo es que despues de creada no puedo verificar si ya existe... entonces leyendo encontre esta sentencia

DECLARE CNT INT;
SELECT COUNT(*) FROM information_schema.TABLES WHERE
TABLE_SCHEMA = 'base' AND TABLE_NAME = 'table' INTO CNT;
IF CNT = 0 THEN
//CREAR LA TABLA
END IF;

BUENO ES ES ASI PERO LO CORRO Y NO FUNCIONA.. LEI QUE NO SIRVEN LOS IF END IF SI NO SON EN PROCEDIMIENTO..

mi pregunta seria como dentro del if se podria ejecutar un scrip prediseñado enviado como parametro al proceso de almacenado... y con que funcion se podria lograr...

gracias de antemano

y por la atencion prestada...........
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sentencia diseñada como parametro en procedure

Publicado por GonzaloGC (339 intervenciones) el 18/11/2010 23:03:22
Sería más sencillo que usaras SHOW TABLES y DESCRIBE nombredelatabla, para que te devuelva detalles.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sentencia diseñada como parametro en procedure

Publicado por Jorge Urrutia (2 intervenciones) el 18/11/2010 23:26:49
Mira que lo logre como pensaba...

cree dos procesos de almacenado...

en este le envio la tabla, base y el scrip a correr

CREATE DEFINER=`root`@`localhost` PROCEDURE `ExecutaTabla`(
IN PBASE VARCHAR(20),
IN PTABLA VARCHAR(20),
IN PSCRIP TEXT
)
BEGIN
DECLARE CNT INT;
SELECT COUNT(*) FROM information_schema.TABLES WHERE
TABLE_SCHEMA = PBASE AND TABLE_NAME = PTABLA INTO CNT;
IF CNT = 0 THEN
CALL ejecuta(PSCRIP);
END IF;
END

y este es el que llamo el que realmente corre los scrips diseñados en runtime..
y quedo bn....

CREATE DEFINER=`root`@`localhost` PROCEDURE `ejecuta`(in cmd text)
SQL SECURITY INVOKER
begin
set @x = cmd;
prepare x from @x;
execute x;
drop prepare x;
end

Voy a rebizar lo que me dijiste haber si sale mas sencillo gracias por la respuesta.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sentencia diseñada como parametro en procedure

Publicado por Martin (150 intervenciones) el 19/11/2010 20:14:13
mm puede ser que CNT sea NULL y no cero, proba con igualar a NULL.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar