Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2005
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
Problema con Zeos + Stored Procedure+ MySql

!Hola a todos¡

Tengo un problema con los Zeos tratando de ejecutar un Stored procedure,
el stored procedure debe regresar datos de un select y he intentado correrlo con un TZQuery y con el TZStoredProcedure sin éxito, en el primer caso me manda el mensaje "db.sp cannot retunr a result set in the given context" y en el segundo caso me dice "unsupported operation". Cabe mencionar que no puedo utilizar el procedimiento ExecSQL debido a que necesito que me regrese el resultado del sp.

el sp es el siguiente:
Código:
 
DELIMITER $$
DROP PROCEDURE IF EXISTS `db`.`sp`$$
CREATE PROCEDURE "db"."sp"()
BEGIN
select Mensaje,tipo from mensaje where Numero='1000';
 
END$$
DELIMITER ;
y el codigo en delphi del TZQuery es:
Código:
query.Close;
query.SQL.Text:='call sp()'; {tambien lo he intentado con query.sql.ADD('call sp()')}
query.Active:=true;
y el codigo del TZStoredProcedure es
Código:
z.Close;
z.StoredProcName:='SP()';
z.Active:=true;
Espero me puedan ayudar, gracias de antemano

Última edición por makina fecha: 17-10-2005 a las 02:17:12.
Responder Con Cita
  #2  
Antiguo 04-01-2006
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
Solucion

Buscando en los foros de mysql.com me di cuenta de que no era el único con este problema, al parecer aun hay algunos problemas en cuanto a que la bd regrese el resultado de un sp al cliente, y por lo visto ni los zeos, dbexpress, ado, etc , ofrecen aun una solucion, sin embargo encontre los componentes MyDac (http://crlab.com/mydac/download.html) (no se que tiene mi browser que no pude insertar el link por eso pongo la url completa) , estos los estuve probando y me da gusto decir que funcionan a la perfeccion el unico inconveniente es que no son FW, pero si se ponen a pensar en todo el tiempo que se pueden ahorrar utilizandolos se daran cuenta de que el costo no es alto.. Saludos a todos los foristas. Feliz año nuevo makina.
Responder Con Cita
  #3  
Antiguo 29-06-2010
jg_gutierrez jg_gutierrez is offline
Registrado
 
Registrado: mar 2009
Posts: 5
Poder: 0
jg_gutierrez Va por buen camino
Smile Resolver del problema de procedimeinto en ZEOSLIB

Bueno ya yo pase por ese asunto.
No esta documentado a ciencia cierta como se hace el trabajo, pero cuando uno tiene la necesidas de alguna forma se consigue el resultado.

Resulta que se hace con el TZQUERY de la siguiente forma:

oCnn: TZConnection;
oQry: tzquery;

oCnn.Properties.Clear;
oCnn.Properties.Add('CLIENT_MULTI_STATEMENTS=1');
oCnn.HostName := 127.0.0.1;
oCnn.protocol := 'mysql-5';
oCnn.Port := 3306;
oCnn.User := root;
oCnn.Password := '';
oCnn.Database := dbname;
oCnn.Catalog := dbname;
oCnn.Connected := true;

Si no se incluye "CLIENT_MULTI_STATEMENTS=1" en la propiedad, nunca se ejecutara el procedimiento almacenado.

oQry.Connection := oCnn;
oQry.SQL.Clear;
oQry.SQL.Text := 'CALL MYPROC 1,2,3';
oQry.ExecSQL;
oCnn.reconnect;

Los SELECT se executan con la sentencia "oQry.Open" para ejecutar o mejor dicho abrir los resultados de la consulta; pero resulta que para los procedimientos almacenados se deben usar "oQry.ExecSQL" el cual ejecuta el comando y devuelve los resultados.

Y por último por alguna extraña razón hay que colocar reconect depues de ejecutar el comando del procedimiento; si no lo haces, no ejecutará correctamente la siguiente consulta.

*A los desarrolldores de ZEOS.
*Si existe alguna forma mas eficiente de hacer el trabajo por favor documentar como.

Saludos:
Johnn G. Gutiérrez
Panamá, Ciudad.
Rep. Panamá.
Responder Con Cita
  #4  
Antiguo 29-06-2010
jg_gutierrez jg_gutierrez is offline
Registrado
 
Registrado: mar 2009
Posts: 5
Poder: 0
jg_gutierrez Va por buen camino
Cool Problema con Zeos + Stored Procedure+ MySql

Problema con Zeos + Stored Procedure+ MySql
Leer arriba!!!
Responder Con Cita
  #5  
Antiguo 18-02-2017
sabroso sabroso is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 13
Poder: 0
sabroso Va por buen camino
Cita:
Empezado por jg_gutierrez Ver Mensaje
Bueno ya yo pase por ese asunto.
No esta documentado a ciencia cierta como se hace el trabajo, pero cuando uno tiene la necesidas de alguna forma se consigue el resultado.

Resulta que se hace con el TZQUERY de la siguiente forma:

oCnn: TZConnection;
oQry: tzquery;

oCnn.Properties.Clear;
oCnn.Properties.Add('CLIENT_MULTI_STATEMENTS=1');
oCnn.HostName := 127.0.0.1;
oCnn.protocol := 'mysql-5';
oCnn.Port := 3306;
oCnn.User := root;
oCnn.Password := '';
oCnn.Database := dbname;
oCnn.Catalog := dbname;
oCnn.Connected := true;

Si no se incluye "CLIENT_MULTI_STATEMENTS=1" en la propiedad, nunca se ejecutara el procedimiento almacenado.

oQry.Connection := oCnn;
oQry.SQL.Clear;
oQry.SQL.Text := 'CALL MYPROC 1,2,3';
oQry.ExecSQL;
oCnn.reconnect;

Los SELECT se executan con la sentencia "oQry.Open" para ejecutar o mejor dicho abrir los resultados de la consulta; pero resulta que para los procedimientos almacenados se deben usar "oQry.ExecSQL" el cual ejecuta el comando y devuelve los resultados.

Y por último por alguna extraña razón hay que colocar reconect depues de ejecutar el comando del procedimiento; si no lo haces, no ejecutará correctamente la siguiente consulta.

*A los desarrolldores de ZEOS.
*Si existe alguna forma mas eficiente de hacer el trabajo por favor documentar como.

Saludos:
Johnn G. Gutiérrez
Panamá, Ciudad.
Rep. Panamá.

Y ese codigo donde va?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:57:57.


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
Copyright 1996-2007 Club Delphi