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