Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-01-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Problema con procedimiento almacenado y Delphi

Buenas, tengo la siguiente llamada a procedimiento almacenado en Delphi:
Código Delphi [-]
function recupero_Valor_Entorno_EBD(nombre_Entorno:string):TStream;
var
  //resultado:TBlobField;
  stream:TStream;
begin
  with DataModule1.spValorEntornoEBD do
  begin
    Close;
    Params.Clear;
    StoredProcName:='RECUPERO_VALOR_ENTORNO_EBD ';  //nombre del store procedure
    Params.CreateParam(ftWideString, 'NOMBRE_ENTORNO', ptInput); //creamos el parametro de entrada
    Params.CreateParam(ftBlob, 'VALOR', ptOutput);   //Valor que recibimos
    ParamByName('NOMBRE_ENTORNO').AsString:=nombre_entorno ;  //le asignamos al param. entrada, su valor
    Prepare; //hacemos que se "arme" el objeto SP
    try
      ExecProc;
      stream:=TStringStream.Create(ParamByName('VALOR').AsString);
      //stream:=StringToStream(ParamByName('VALOR').AsBlob);
      unPrepare;
      Result:=stream;
      //stream.Free;
    except
      UnPrepare;
      //stream.Free;
      raise;
    end; //del try
  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
  /* Recupero el valor entorno según el nombre_entorno solicitado */
  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.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Procedimiento almacenado Tauro78 Firebird e Interbase 6 12-02-2007 17:43:06
Problema con procedimiento almacenado XBart Firebird e Interbase 3 27-10-2005 09:08:17
problema con procedimiento almacenado Choclito Firebird e Interbase 2 04-11-2004 20:58:46
Problema con procedimiento almacenado juziel Firebird e Interbase 4 20-09-2004 18:31:41
Problema con un procedimiento almacenado Markoz Firebird e Interbase 1 08-07-2003 11:47:20


La franja horaria es GMT +2. Ahora son las 20:35:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi