PDA

Ver la Versión Completa : como acceso a los datos que devuelve un procedimiento almacenado?


r1d2m3
26-10-2010, 21:01:33
Hola a todos, estoy creando unos procedimientos almacenados en MySQL para que luego sean consumidos desde una aplicación en delphi, el mi código estoy usando el componente TADOCommand para ejecutar el sp, hasta aquí todo bien, peeero, siempre hay un pero, ¿como hago para devolver el contenido del sp en un componete TADOQuery?, ¿existe la forma de llenar un TADOQuery con un sp?.

Les pego un pequeño código de ejemplo de lo que intento hacer:



function SPListMovimCarpe(varConexBD:TADOConnection; varIdCarpe:Integer) : TADOQuery;
var
consu:TADOQuery;
sproc:TADOCommand;
begin
consu:=TADOQuery.Create(nil);

sproc:=TADOCommand.Create(nil);
with sproc do
begin
CommandType := cmdStoredProc;
Connection := varConexBD;
CommandText := 'sproc_listMovCarpe';
Parameters.Refresh;
Parameters.ParamByName('@idCarpe').Value:=varIdCarpe;
Execute;
//aquí es donde tengo el problema, ¿como devuelvo el contenido del sp?.
//Execute me devuelve un tipo ADOInt._Recordset y no se como manejarlo
//para que lo devuelva como un TADQuery.
end;
end;



Saludos y quedo a la espera de alguna ayuda al respecto.

Al González
26-10-2010, 21:49:01
Hola.

Nunca hice eso con ADO, pero leyendo la ayuda de Delphi respecto al método TADOCommand.Execute, creo que tendrías que cambiar una de las sentencias:


consu.Recordset := Execute;


When a command is executed that creates a recordset, Execute returns the recordset and it must be accessed through an ADO dataset component. To do this, assign the return value of Execute directly to the recordset property of an ADO data set component. For example:

ADODataSet1.Recordset := ADOCommand1.Execute;

No olvides destruir los objetos TADOCommand y TADOQuery cuando ya no los necesites.

Saludos.

Al González. :)