Einzelnen Beitrag anzeigen

Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#15

AW: Stored Procedure: Rückgabewert

  Alt 18. Mär 2011, 12:56
Hi,

ich krieg die Krise.
Ich hatte den Code von omata übernommen und das hatte auch alles geklappt.
Seit eben kommt aber bei allem was ich tue (auch bei einer anderen Methode) nur noch folgende Fehlermeldung:

Zitat:
invalid transaction handle (expecting explicit transaction start)

Der Code im Moment:
Delphi-Quellcode:
var
  proc: TIBCStoredProc;
  ta: TIBCTransaction;
  query: TIBCQuery;
  i, contactid: Integer;
begin
  ta := TIBCTransaction.Create(nil);
  proc := TIBCStoredProc.Create(nil);
  query := TIBCQuery.Create(nil);
  result := True;
  try
    ta.DefaultConnection := ibc_mainDB;
    proc.Transaction := ta;
    query.Transaction := ta;
    ta.StartTransaction;
    try
      proc.StoredProcName := 'CREATECUSTOMER';
      proc.Prepare;
      proc.ParamByName('name').Value := custName;
      proc.ParamByName('title').Value := title;
      proc.ParamByName('forename').Value := forename;
      proc.ParamByName('surname').Value := surname;
      proc.ParamByName('street').Value := street;
      proc.ParamByName('houseNo').Value := houseNo;
      proc.ParamByName('country').Value := Uppercase(country);
      proc.ParamByName('zipcode').Value := zipcode;
      proc.ParamByName('cityname').Value := cityname;
      proc.ExecProc;
      contactid := proc.ParamByName('contactid').AsInteger;

      query.SQL.Text :=
        'INSERT INTO DIALNUMBER (NUMBERTYPE, NUMBER, CONTACTID) VALUES (:type, :no, :contactid)';
      query.Prepare;
      for i := 0 to length(dialNo) - 1 do
      begin
        query.ParamByName('type').Value := dialNo[i][0];
        query.ParamByName('no').Value := dialNo[i][1];
        query.ParamByName('contactid').Value := contactid;
        query.Execute;
      end;

      ta.Commit;
    except
      result := False;
      ta.Rollback;
      raise;
    end;
  finally
    query.Free;
    proc.Free;
    ta.Free;
  end;
end;

Was mache ich falsch?
Es tritt auch bei den Codes von Thomas und omata auf.
Ich muss also irgendwo was generelles verdreht haben, aber ich weiß nicht was?!
Neustart half auch nicht.

LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat