ich habe nun schon etliche Versuche hinter mir, ein BLOB- Feld aus einer Oracle- Datenbank herauszukitzeln. Mein letzter Versuch lautete wie folgt:
Code: Alles auswählen
function LoadGetBlobFieldFromDataBase(const pcsUserName, pcsPassword, pcsDatabaseName, pcsSQL:string):string;
var
lvConn : TOracleConnection;
lvQuery : TSQLQuery;
lvTransaction : TSQLTransaction;
lvStream : TMemoryStream;
lvnSize : integer;
begin
lvConn := TOracleConnection.Create(NIL);
lvTransaction := TSQLTransaction.Create(NIL);
lvQuery := TSQLQuery.Create(NIL);
lvStream := TMemoryStream.Create();
lvConn.UserName := pcsUserName;
lvConn.Password := pcsPassword;
lvConn.DatabaseName := pcsDatabaseName;
lvTransaction.DataBase := lvConn;
lvQuery.DataBase := lvConn;
lvQuery.Transaction := lvTransaction;
lvQuery.SQL.Text := pcsSQL;
try
lvConn.Open;
lvQuery.Open;
lvQuery.FieldDefs[0].DataType := ftOraClob;
lvQuery.SaveToStream(lvStream);
result := lvStream.ToString;
finally
FreeAndNil(lvStream);
FreeAndNil(lvQuery);
FreeAndNil(lvTransaction);
FreeAndNil(lvConn);
end;
end;

Meine Versuche davor (zu Fuss) waren:
Oracle Connection bauen, Transaction dran, SQL- Query dran, Dataset dran, DBMemo dran
Wenn das SQL "select sysdate from dual" lautet, dann klappte alles fein. Wenn ich das geplante SQL hineinwürge, kommt Oracle mit einer Fehlermeldung 1406: String wurde abgeschnitten.
So langsam geht mir die Puste aus
