Estando acostumbrado a los procedimientos almacenados en SQL Server, quise hacer lo mismo con MySQL, lo cual me resultó muy difícil al principio; pero una vez leído algo de material en Internet, lo he conseguido.
Dependiendo de la tarea que se desee realizar, será la estructura del procedimiento almacenado. Aunque el armazón siempre será igual, aquí les pongo la estructura general:
/*Para eliminarlo si ya existe*/ DROP PROCEDURE IF EXISTS ´proc_NombreProcedimiento´; /*Crearlo*/ create procedure ´proc_NombreProcedimiento´ ( parametro int ) BEGIN /*Instrucciones*/ END
En caso de no llevar parámetros, solo dejamos los paréntesis vacíos
Acerca de las instrucciones, es simple, si deseamos insertar datos en una tabla, sería mas o menos así:
/*Para eliminarlo si ya existe*/ DROP PROCEDURE IF EXISTS ´proc_InsertarJur´; /*Crearlo*/ create procedure ´proc_InsertarJur´ ( pIdJuris int, pJuris varchar(50), pIdRegion int, pGrupo varchar(50) ) BEGIN /*Insertar un valor*/ insert into juris(idjuris,juris,idregion,grupo) values(pIdJuris,pJuris,pIdRegion,pGrupo); END
Es muy importante respetar los puntos y coma. Muchos errores podrían no detectarse solo por la sintaxis del punto y coma.
Si deseamos hacer una búsqueda, sería mas o menos así:
/*Para eliminarlo si ya existe*/ DROP PROCEDURE IF EXISTS ´proc_BuscarJur´; /*Crearlo*/ create procedure ´proc_BuscarJur´ ( pJuris varchar(50) ) BEGIN /*Declaraciones*/ declare sql_stat varchar(1700); declare sql_jur varchar(1500) ; declare sql_order varchar(1000); /*Instrucción SQL principal*/ set sql_stat = ' select * from juris where idjuris <> 0 '; /*Jurisdiccion*/ IF (pJuris <> '') THEN set sql_jur = concat(' and juris like ', '''%', pJuris, '%'''); ELSE set sql_jur =''; end if; /*Ordenar*/ set sql_order = ' order by juris '; set @sql_end = concat(sql_stat, sql_jur) ; set @sql_end = concat(@sql_end , sql_order); /*Ejecutar SQL*/ PREPARE stmt1 FROM @sql_end; EXECUTE stmt1; END
Nota: Este ejemplo de búsqueda es dinámico. Creo que es mas útil que un ejemplo de búsqueda simple.
Espero que esta publicación les haya dado ideas para procedimientos almacenados mas sofisticados.
Gracias
No hay comentarios:
Publicar un comentario