Ver Mensaje Individual
  #3  
Antiguo 29-06-2010
jg_gutierrez jg_gutierrez is offline
Registrado
 
Registrado: mar 2009
Posts: 5
Reputación: 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