Bitcoin

BitMiner - free and simple next generation Bitcoin mining software

martes, mayo 15, 2007

Manejo de Stored Procedures en Delphi

Continuando con la práctica 1, y resolviendo la peticion de un visitante, primero que nada, un Stored Procedure o Procedimiento Almacenado es un Query o Funcion almacenada en la Base de Datos de nuestra preferencia, en mi caso es MySQL 5.0, donde por medio de parámetros el query ejecutará una serie de acciones las cuales traerán consigo el resultado que queramos.

Existen varias formas de llamar un Stored Procedure (Procedimiento Almacenado) en
Delphi, pero yo usaré la más fácil, con el uso de un ZTQuery. Esto tambien se puede hacer de la misma manera con componentes ADO, pero para este ejemplo usaré las librerías Zeos.

La sintaxis de un Stored en MySQL es la siguiente:

NOTA: El siguiente stored inserta el registro de un cliente en la tabla T_CLIENTES

CREATE PROCEDURE `sp_ClientesInserta`
(
IN `pid_cliente` bigint(11),
IN `pnombre` varchar(100),
IN `prfc` varchar(20),
IN `pdireccion` varchar(100),
IN `pcp` varchar(10),
IN `pciudad` varchar(50)
)
BEGIN
/* Inserta nuevo registro*/
Insert into t_clientes (nombre, rfc, direccion, cp, ciudad) values (pnombre, prfc, pdireccion, pcp, pciudad);
END

Con código rojo destaco el nombre del Procedimiento Almacenado, en verde se muestran cada uno de los parametros y dentro de Begin y End van nuestras sentencias SQL.

Tambien podemos hacerle una modificacion donde se valide primeramente si ya existe el mismo RFC en la tabla antes de insertarlo.

CREATE PROCEDURE `sp_ClientesInserta`
(
IN `pid_cliente` bigint(11),
IN `pnombre` varchar(100),
IN `prfc` varchar(20),
IN `pdireccion` varchar(100),
IN `pcp` varchar(10),
IN `pciudad` varchar(50)
)
BEGIN
/*Valida Existencia de RFC*/
Declare vContador varchar(20);
Select vContador=count(*) From t_clientes Where rfc=prfc;
/* Inserta nuevo registro*/

IF vContador <=0 then
Insert into t_clientes (nombre, rfc, direccion, cp, ciudad) values (pnombre, prfc, pdireccion, pcp, pciudad);
END IF;
END

Ahora con azul contabilizamos los registros que coincidan con el RFC que enviamos de parámetro, si existe alguno no se inserta (con amarillo).

Ya que tenemos nuestro Stored Procedure lo llamamos con la sentencia CALL.

call sp_ClientesInserta(1,'Jesús Feran','XXXXXXXXXXXX','Tecnosis MX', 555555,'SJR');

Ahora lo unico que resta es llamarlo en un ZTQuery desde delphi.

Active:=False;
Connection:=ZConnection1;
Close;
SQL.Clear;
SQL.Add("call sp_ClientesInserta(1,'Jesus Feran','XXXXXXXXXXXXX','Tecnosis MX', 56500,'SJR');");
ExecSQL;
Close;

Y según yo, ya es todo, con eso envian parámetros a un stored desde delphi.

Espero les sirva, nos vemos.

NOTA: Se pueden crear Stored Procedures con el asistente de MySQL Maestro, pero se me hace muy tardado, aun que seguro.

Seguímos en Linea.

1 comentario:

  1. Hola Buen dia
    Me funciono Todo su codigo, la unica duda que tengo es como imprimo este resultado en algun edit de Delphi,
    Si me pudiera ayudar de Antemano se lo agradeceria Atte Cuan

    ResponderEliminar

Tu comentario es importante para nosotros, gracias por darnos tu opinión.