Hallo, liebe DPler.
Bin grad über die Suche auf den thread hier gestoßen, und da mein Problem ein ähnliches ist und ich (mal wieder) etwas festhänge, dachte ich, ich poste mal:
Ich greife auf eine Interbase
DB zu, in der ich folgende stored procedure habe:
SQL-Code:
begin
select count(*)
from mcsc_parameter
where upper(parameter_id) = upper(:pi_parameter_id)
into par_found;
if (par_found = 0) then
insert into mcsc_parameter
values (:pi_parameter_id, :pi_parameter_value);
else
update mcsc_parameter
set parameter_value = :pi_parameter_value
where parameter_id = :pi_parameter_id;
po_ret_val = par_found;
suspend;
end
Die beiden
I_ Variablen sind meine Input-Parameter,
O_ entsprechend der Output-Parameter. par_found ist eine integer-Variable der Procedure. Das ganze hab ich im
IB-Expert schon getestet und es scheint auch soweit korrekt zu laufen.
Diese Procedure rufe ich in Delphi in einer Funktion wie folgt auf:
Delphi-Quellcode:
function TDataModule2.MCSC_Put_Param_Value(par_id, par_val: string): String;
var par_ind: integer;
begin;
if par_id = '' then par_id := 'DUMMY';
par_id := Uppercase(par_id);
self.MCSC_StoredProc_IB_1.StoredProcName := 'MCSC_PUT_PARAMETER';
par_ind := self.MCSC_StoredProc_IB_1.ParamByName('PI_PARAMETER_ID').Index;
self.MCSC_StoredProc_IB_1.Params[par_ind].Value := par_id;
par_ind := self.MCSC_StoredProc_IB_1.ParamByName('PI_PARAMETER_VALUE').Index;
self.MCSC_StoredProc_IB_1.Params[par_ind].Value := par_val;
self.MCSC_StoredProc_IB_1.ExecProc;
par_val := self.MCSC_StoredProc_IB_1.Params.ParamValues['PO_RET_VAL'];
Result := par_val;
end;
Rufe ich jetzt (z.B. in einem Button-Pressed Event) diese Funktion mit zwei Parametern auf und laß mir das Ergebnis ausgeben, so erhalte ich erwartungsgemäß das Ergebnis der stored Proc, nämlich die Anzahl der vorhandenen Parameter in der Tabelle, die dem ersten Parameter entsprechen (im Normalfall 0 oder 1). Schaue ich jedoch dann in die
DB, wurde weder Update noch Insert ausgeführt (was im
IB Expert aber funktioniert hat). Commit kann ich aus der Procedure nicht aufrufen und das Commit der default transaction ändert auch nichts... irgendeine Idee, woran das liegen kann?
mfg
Ty
God is integer - until declared real...