P.S.
можно и без создания функции конечно, т.е. воспользоваться таким анонимным SQL блоком :
var
Q : TOracleQuery; // DOA
sTxt : string;
begin
Q := TOracleQuery.Create(nil);
try
Q.Session := .....
Q.DeclareVariable(':RES', otCLOB);
Q.SQL.Add('declare');
Q.SQL.Add(' sLine varchar2(255);');
Q.SQL.Add(' iStatus integer;');
Q.SQL.Add('begin');
Q.SQL.Add(' DBMS_LOB.CreateTemporary(:RES, true);');
Q.SQL.Add('');
Q.SQL.Add(' loop');
Q.SQL.Add(' DBMS_OUTPUT.GET_LINE (sLine, iStatus);');
Q.SQL.Add(' exit when iStatus<>0;');
Q.SQL.Add(' :RES := :RES||sLine||chr(13)||chr(10);');
Q.SQL.Add(' end loop;');
Q.SQL.Add('end;'
Q.Execute();
sTxt := Q.GetVariable(':RES');
finally
FreeAndNil(Q);
end;
ShowMessage('DBMS_OUTPUT = '+#13#10+
sTxt);
end;
но с функцией все-таки элегантнее на мой взгляд