Buenas, tengo la siguiente llamada a procedimiento almacenado en Delphi:
Código Delphi
[-]
function recupero_Valor_Entorno_EBD(nombre_Entorno:string):TStream;
var
stream:TStream;
begin
with DataModule1.spValorEntornoEBD do
begin
Close;
Params.Clear;
StoredProcName:='RECUPERO_VALOR_ENTORNO_EBD '; Params.CreateParam(ftWideString, 'NOMBRE_ENTORNO', ptInput); Params.CreateParam(ftBlob, 'VALOR', ptOutput); ParamByName('NOMBRE_ENTORNO').AsString:=nombre_entorno ; Prepare; try
ExecProc;
stream:=TStringStream.Create(ParamByName('VALOR').AsString);
unPrepare;
Result:=stream;
except
UnPrepare;
raise;
end; end;
end;
Como se ve, recupera desde una tabla de Firebird un valor, que es un BLOB.
El problema es que cuando lo quiero ver en un RichEdit me muestra simplemente "(blob)", y no el contenido del blob.
Pongo el procedimiento almacenado que hice:
Código SQL
[-]
CREATE PROCEDURE RECUPERO_VALOR_ENTORNO_EBD (
nombre_entorno varchar(30))
returns (
valor blob sub_type 0 segment size 100)
as
begin
Select CAST(e.valor_ebd AS BLOB) AS valor_ebd
From entorno_boletin_digital e
Where e.nombre_ebd = :nombre_entorno
into :valor;
suspend;
end;
Ahora, como lo intento poner en un RichEdit:
Código Delphi
[-]
rchGobernador.Lines.LoadFromStream(recupero_Valor_Entorno_EBD('GOBERNADOR'));
Muestro la tabla:
Código SQL
[-]
CREATE TABLE ENTORNO_BOLETIN_DIGITAL (
COD_EBD INTEGER NOT NULL,
TIPO_EBD VARCHAR(10),
NOMBRE_EBD VARCHAR(200),
VALOR_EBD BLOB SUB_TYPE 0 SEGMENT SIZE 100 CHARACTER SET ISO8859_1,
DESCRIPCION_EBD VARCHAR(300)
Agradecería que me dijeran que está pasando porque no le veo la razón para que haga eso.
Saludos.