Ver Mensaje Individual
  #1  
Antiguo 23-09-2013
Yomarcol Yomarcol is offline
Registrado
NULL
 
Registrado: abr 2013
Posts: 3
Reputación: 0
Yomarcol Va por buen camino
acceso lectura CLOB/BLOB

hola a todos:

Estoy programando una aplicación en Delphi 5 en la que he acceder a un blob mediante componentes TOCIQUery. Uso Delphi 5 y el driver de Oracle SqlORA32.dll.

Tengo una tabla que tiene un campo CLOB_INI (tipo CLOB) que contiene un ini para una aplicación. En principio, revisando este foro, encontré el modo de leer y escribir, pero no sé por qué, a la hora de leer el campo, aparece un error ORA-3123: La operación se bloquearía.

Esto hace que no pueda descargar el ini ni poderlo manejar. el procedure que utilizo es éste (hay cosas comentada porque he querido verificar que realmente accedía a la bbdd y encontraba al menos un registro).

Si he puesto algo incorrecto, por favor decírmelo (tanto en el mensaje como en el código en sí...)

Saludos y gracias adelantadas

Código Delphi [-]
procedure LeerIni(mi_ini:TStream);
var
 Qry : TOCIQuery;
 tmp_ini:TStream;
 MS: TMemoryStream;
 BlobField: TField;
 blob: TBlobStream;



begin

 Qry := TOCIQuery.Create(nil);
 MS := TMemoryStream.Create;



 try

  Qry.DatabaseName := dmSql.DatabaseBLOB.DatabaseName;
  Qry.SQL.Add('SELECT *');
  Qry.SQL.Add(' FROM TABLA_INI');
  Qry.SQL.Add(' WHERE NOM_INI= ''fichero_ini'' ');
  try
        Qry.Open;
        except
        on e:exception do
                begin
                ShowMessage('Error cargando ini de BBDD: ' + e.Message);
                end;
        end;
 { qry.SQL.SaveToFile('c:/query1.txt');

  if Qry.RecordCount >0
  then Showmessage('hay un registro');}

 with Qry do
 begin
  tmp_ini := CreateBlobStream(Qry.FieldbyName('CLOB_INI') as TBlobField, bmRead);

 end;
 //Qry.Free;
 try
    tmp_ini.Seek(0, soFromBeginning);
          //contenidoIni.Seek(0, soFromBeginning);
     with TFileStream.Create( DIRECTORIO_INI + NOMBRE_INI, fmCreate) do
     try
             CopyFrom(tmp_ini, tmp_ini.Size)
     finally
              Free
     end;
 finally
          tmp_ini.Free;

 end;

 finally
  Qry.Free;

 end;

end;
Responder Con Cita