Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Llamar a Procedientos Almacenados de MySql (https://www.clubdelphi.com/foros/showthread.php?t=25077)

Mefistofeles 11-09-2005 23:02:12

Llamar a Procedientos Almacenados de MySql
 
Hola gente... estoy teniendo un problema al hacer la llamada a un procedimiento almacenado en MySql. Mediante un Query utilizo un 'call proc(param)', activo la consulta y me devuelve un error de que el procedimiento no existe. Estoy utilizando MySql 5 y me da el mismo error cuando trato de ejecutar el procedimiento desde el MySql Query Browser. Pero cuando lo llamo desde el MySql Front 3.2 no me da problemas. Alguien me puede explicar por que??

fredo 12-09-2005 17:56:03

¿con que componentes estas trabajando par llamar a tu procedimiento.... :confused: ?

Mefistofeles 13-09-2005 04:44:43

Estoy usando Delphi 6 y los componentes BDE Query, es necesario usar el componente StoreProc ?? . Luego les posteo el codigo del procedimiento, es un select simple, pero antes de que se defina el procedimiento tiene una linea que dice DELIMITER $$ y despues de la definicion un DELIMITER ; que hasta el momento no se para qué.

fredo 13-09-2005 14:29:27

supongo que el driver ODBC que estas usando no soporta aun los SP, tendrias primero que averiguar eso, ¿has probado con SP's (Store Procedure) simples?, te dan errores?, probaste llamarlo en SQLQuery de DBExpress directamente, saludos. :confused:

lucasarts_18 13-09-2005 15:33:23

Hola:

Mefistofeles, recuerda que la versión de Mysql 5 está en beta todavía, puede que por ahí el asunto no te resulta con distintos software, tal como tú lo mencionaste...
Otra cosa, quizás esos software no soporten aún el MySQL 5

Saludos...

Mefistofeles 26-09-2005 23:20:48

El problema que tenia era que me olvide de especificar el nombre de la base de datos al llamar al procedimiento. Tendría que haber puesto 'call DB.procedure()'.
Si quiero hacer una consulta y poder ver el resultado de la consulta deberia usar una función o un procedimiento? por ejemplo, quiero hacer un listado de afiliados que ya pagaron el mes de agosto, y visualizar el resultado en un dbgrid. Mi consulta la unica linea que tiene es:

select * from pagos where estado='pagado' and periodo='08-2005';

el mensaje que obtengo es "DB.procedure Can´t return a resultset in the given context".
El ODBC que estoy utilizando es el 3.51, quiero usar el 5.0 pero me presenta conflictos al conectar la base de datos.

lucasarts_18 27-09-2005 20:52:59

Cita:

Empezado por Mefistofeles
Si quiero hacer una consulta y poder ver el resultado de la consulta deberia usar una función o un procedimiento? por ejemplo, quiero hacer un listado de afiliados que ya pagaron el mes de agosto, y visualizar el resultado en un dbgrid. Mi consulta la unica linea que tiene es:

select * from pagos where estado='pagado' and periodo='08-2005';

Por qué no pruebas esa consulta con un Tquery ??

Cita:

Empezado por Mefistofeles
Si quiero hacer una consulta y poder ver el resultado de la consulta deberia usar una función o un procedimiento?

Esto no lo entiendo, un función o un procedimiento, donde ? en Delphi o MySQL ?.

Saludos.

Mefistofeles 28-09-2005 15:14:00

Siempre me refiero a funciones o procedimientos almacenados de MySQL. Hasta el momento estoy usando TQuery para mis consultas pero quiero comenzar a usar procedimientos almacenados en MySQL y llamarlos desde delphi.

lucasarts_18 29-09-2005 00:12:24

Cita:

Empezado por Mefistofeles
.
Si quiero hacer una consulta y poder ver el resultado de la consulta deberia usar una función o un procedimiento?

Yo te recomiendo procedimientos, las funciones devuelven un resultado y depende de los quieras hacer...

Puedes llamar a los procedimientos almacenados desde un TQuery como de una consulta se tratará, yo llamo a los procedimientos de SQL Server desde un TQuery con la siguiente instrucción..

Código SQL [-]
  Exec MiProcedimiento

y creo que debería funcionarte para MySQL, sólo debes averiguar con que instrucción ejecutas un procedimiento almacenado en MySQL.

Saludos y cualquier cosa insisté...;)

makina 22-12-2005 00:59:54

Cita:

Empezado por Mefistofeles
Estoy usando Delphi 6 y los componentes BDE Query, es necesario usar el componente StoreProc ?? . Luego les posteo el codigo del procedimiento, es un select simple, pero antes de que se defina el procedimiento tiene una linea que dice DELIMITER $$ y despues de la definicion un DELIMITER ; que hasta el momento no se para qué.

El DELIMITER $$ se usa para decirle a mysql que cambie el caracter delimitador de ";" a "$$" para que puedas usar el ";" dentro de la estructura de tu sp, y al final del sp vuelve a cambiar el "$$" por el ";" (DELIMITER ; )

espero se comprenda la explicación, Saludos,. por cierto yo tengo el mismo problema si encontraste la solucion porfavor compartela.


La franja horaria es GMT +2. Ahora son las 16:12:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi