Einzelnen Beitrag anzeigen

kohennigs
(Gast)

n/a Beiträge
 
#4

Re: Update/insert CLOB Feld in Oracle (TLobLocator)

  Alt 3. Jun 2005, 09:14
OK , also hier mal meine Lösung:

Delphi-Quellcode:
procedure[i] XYZ[/i]([i]PQR[/i]);
var
  LOB: TLOBLocator;
  qry: TOracleQuery;
begin
try
  qry := TOracleQuery.Create(..);
  LOB := TLOBLocator.Create([i]SESSION[/i], otCLOB);
  try
    with qry do
    begin
      Session := [i]SESSION[/i];
     // [i]SPALTE[/i] ist das (C)LOB Feld
     // Füllen des Feldes mit einen leeren clob
      SQL.Text := 'UPDATE [i]TABELLE[/i] SET [i]SPALTE[/i]= empty_clob() WHERE id =' [i]ID[/i] +
                    ' returning [i]SPALTE[/i] into :[i]SPALTE[/i]';
      // Variable deklarieren
      DeclareVariable('[i]SPALTE[/i]', otClob);

      // Variable als Lobverweis setzen
      SetComplexVariable('[i]SPALTE[/i]', LOB);
    end;
  // Statemant ausführen
  qry.Execute;

  // Verweis aus Lobinhalt übergeben und aus Datei laden
  LOB.AsString := sRtm; // Alternativ: LOB.LoadfromFile(String);
 
 // Committen :-)
  DBAnmeldung.DB.Commit;

  finally
  qry.free
  LOB.free
except
  // Sprich zu mir!
  on E: Exception do
  begin
    raise Exception.create(self.ClassName + 'DB-Eintraungg schlug fehl! ' + ' ' + E.Message);
    // Im Fehlerfalls -> Rückwärtsrolle
    DBAnmeldung.DB.Rollback;
  end;
end;



MfG

Kai Hennigs
  Mit Zitat antworten Zitat