Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Inhalt eines Blobfeldes nur bei Abruf laden

  Alt 24. Apr 2008, 12:45
Also, ich habs jetzt folgendermaßen gemacht:

Delphi-Quellcode:
  OraQuery1.Close;
  OraQuery1.SQL.Clear;
  SQL := 'SELECT * FROM ' + mytable + ' WHERE 1=2';
  OraQuery1.SQL.Add(SQL);
  OraQuery1.Open;
  Lst := TStringList.Create;
  LstBlob := TStringList.Create;
  LstNonBlob := TStringList.Create;
  try
    OraQuery1.GetFieldNames(Lst);
    
    for i := 0 to Lst.Count - 1 do
    begin
      if OraQuery1.FieldByName(Lst.Strings[i]).IsBlob then
        LstBlob.Add(Lst.Strings[i])
      else LstNonBlob.Add(Lst.Strings[i]);
    end;

    SQL := 'SELECT ' + LstNonBlob.CommaText + ',';

    for i := 0 to LstBlob.Count - 1 do
    begin
      SQL := SQL + 'CAST(NULL AS BLOB) AS ' + LstBlob.Strings[i];

      if i < (LstBlob.Count - 1) then
         SQL := SQL + ',';
    end;

    SQL := SQL + ' FROM ' + mytable;

    OraQuery1.Close;
    OraQuery1.SQL.Clear;
    OraQuery1.SQL.Add(SQL);
    OraQuery1.Open;
  finally
    Lst.Free;
    LstBlob.Free;
    LstNonBlob.Free;
  end;
Wenn ich das Query dann öffnen möchte gibts folgende Fehlermeldung:

"ORA-00932: inconsistent datatypes:expected- got BLOB"
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat