Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Stored Procedure con MySQL (https://www.clubdelphi.com/foros/showthread.php?t=67348)

rodriguezwalter 12-04-2010 22:15:54

Stored Procedure con MySQL
 
Hola a todos.

Estoy comenzando a trabajar con Stored procedures en Delphi y no encuentro la forma correcta de llamarlos (invocarlos).

No creo que el problema sea tan grande pero ya no se que hacer.

La Base de Datos es MySQL.

Utilizo el TStoredProc y el TDataBase.

Conecto la Base de Datos, completo los campos de Base de Datos en el TStoredProc y Selecciono el nombre del procedimiento, lo cual indica que por lo menos hasta este paso el componente del Stored conecta.

Creo los parámetros en Params y al intentar correr la aplicación siempre sale algún error como por ejemplo:
project Project1.exe raised exception class ElistError with message 'List out bounds (0)'.
Este error no es el único. En ocaciones probando y arreglando los parámetros aparecen errores que justo no he copiado pero se refieren a que no están definidos o existe algun inconveniente en la definición de por ejemplo el primer parámetro (El cual sí está definido)

He averiguado y aparentemente el problema está en la definición pero lo que he ledido hasta ahora no aporta nada nuevo ya que el problema sigue.

Además, intenté correro el Stored Procedure con una sentencia call desde un tquery pero no logro correr nada.

¿Alguien sabe qué pasos debo seguir para poder correr un StoredProc desde Delphi contra una Base MYSQL.

Adicionales:
Utilizo una conector ODBC que bajé de MySQL para conectar el equipo del desarrollo (WIndows) al equipo de Base de Datos (Windows).

En caso de necesitar algunos datos más, los agrego.
Desde ya gracias por todo.

rgstuamigo 15-04-2010 21:54:31

Revisa éste hilo que puede servirte de ayuda.;).
Saludos...:)

waly2k1 12-01-2011 16:36:05

Y todo es posible...
 
Hola, como vi que muchos preguntan lo mismo y hasta me vi en la misma situación y probé varias alternativas que vi en la web y no me funcionaron,
desde asignar parametros hasta crearlos y no funcionaba decidí probar de ésta manera y funcionó a la perfección. Nose si con las versiones de zeos
que usan les funciona los ejemplos aportados o no, pero a mi me daba siempre operación no soportada y uso la ultima version siempre.
Aclaración: Todas las pruebas las hacia desde la creación de un objeto TZStoredProc.

Código:

procedure TfrmOFFSET.btnOKClick(Sender: TObject);
var
    sSQL:string;
    qryEXEC:TZQuery;
begin
    sSQL := 'CALL SP_ORDEN_HEAD_INS' +
            ' ( ' +
                ':ID_CLIENTE, ' +
                ':FECHA_INICIO, ' +
                ':FECHA_ENTREGA, ' +
                ':DOMICILIO_ENTREGA, ' +
                ':TELEFONOS, ' +
                ':EMAIL, ' +
                ':ID_RUBRO, ' +
                ':MUESTRA, ' +
                ':OBSERVACIONES' +
            ' ) ';

    qryEXEC := TZQuery.Create( nil );
    qryEXEC.SQL.Add( sSQL );

    qryEXEC.ParamByName( 'ID_CLIENTE'            ).Value := iCliente;
    qryEXEC.ParamByName( 'FECHA_INICIO'            ).Value := dInicio;
    qryEXEC.ParamByName( 'FECHA_ENTREGA'        ).Value := dFin;
    qryEXEC.ParamByName( 'DOMICILIO_ENTREGA'    ).Value := sDomic;
    qryEXEC.ParamByName( 'TELEFONOS'            ).Value := sTel;
    qryEXEC.ParamByName( 'EMAIL'                ).Value := seMail;
    qryEXEC.ParamByName( 'ID_RUBRO'                ).Value := lngRubro;
    qryEXEC.ParamByName( 'MUESTRA'                ).Value := Abs( StrToInt( BoolToStr( bMuestra ) ) );
    qryEXEC.ParamByName( 'OBSERVACIONES'        ).Value := sObserv;

    qryEXEC.Connection := Data.zConx;
    qryEXEC.ExecSQL;
    FreeAndNil( qryEXEC );
    Close;
end;

Así que acá posteo mi humilde fragmento de código, funciona a la perfección y aparte mucho más prolijo que andar concatenando cadenas de parámetros.
Así que bueh, espero que a alguien le sirva y pueda aprovecharlo.

Saludos gente del Club y gracias por existir!
Walter


La franja horaria es GMT +2. Ahora son las 13:40:16.

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