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"