Yo tenía el mismo problema y lo solucioné declarando la variable como variable de salida, es decir:
Código SQL
[-]
Create.....
@Tot Money output
...
Select.....
Y en delphi, utilizando un componente TSDStoredProcedure (librería SQLDirect):
Código Delphi
[-]
with datamod1.SPTotal do begin
if active then close;
Prepare;
ParamByName('@Tot').AsFloat:=0.0;
Prepare;
ExecProc;
GetResults;
Open;
edtTotal.AsCurrency := ParamByname('@Tot').AsCurrency;
Close;
UnPrepare;
end;
Si, ya se que estoy repitiendo instrucciones "Prepare" y luego Execpro seguido de un GetResults... a mi no me parece lógico que lo tenga que hacer así, pero le intenté de muchas formas y solo así es como por fin pude ver el resultado.
Ojala y algún experto en el tema, pueda ilustrarme.