ORQACLE 9.2i BFILE- funkcie

Kluvanek Martin kluvanek na tesnet.cz
Úterý Červenec 15 19:37:34 CEST 2003


Pomooc.
Uz opravdu netusim, kde robim chybu.
Netusite nahodou niekto, kde je zrada?
Napisal som si funkciu
create or replace function BFILE_FILESIZE(BLOK in BFILE) return number is
   Result number;
begin
   result:=0;
   if blok is null then
     result:=0;
   else
      result:=SYS.DBMS_LOB.getlength(blok);
   end if;
   return(Result);
end BFILE_FILESIZE;

Spravil som si testovaci program

declare
   da bfile;
   v number;
begin
   select data into da from blob_zaznam where zaznam_id=1006;
if da is null then
   sys.dbms_output.put_line('NULL');
else
     v:=SYS.DBMS_LOB.getlength(da);
     sys.dbms_output.put_line('len1=' ||to_char(v));
     v:= BFILE_FILESIZE(da);
     sys.dbms_output.put_line('len2=' ||to_char(v));
end if;
end;


Ked to spustim (id 1006 ukazuje na korektny nenulovy zaznam)
tak sa vypise len1=nejake cislo (spravne)
a vo volani BFILE_FILESIZE to vsak padne na prikaze 	
    result:=SYS.DBMS_LOB.getlength(blok);
ORA-22285:pro operaci GETLENGHT neexistuje adresar nebo soubor.

???preco volanie jednej a tej istej funkcie ide z testovacieho sql ok a 
z funkcie nie?
Pricom DBMS_LOB.FILEGETNAME vracia spravne
dir="MSE_ANALOGDATA" file="2B\Gen2#.tes"
DBMS_LOB.fileexists =1
DBMS_LOB.getlength=5466
DBMS_LOB.fileopen funguje....

Pokial je BFILE null, tak to funguje spravne (vrati 0).
Takto nefunguje GetLength, Fileexists
ale funguje FILEGETNAME... (procedura)...

Dokonca i vovnutri v BFILE_FILESIZE ked to vysperkujem i FILEGETNAME tak 
FILEGETNAME vrati rozumne hodnoty a GETLENGTH zhavaruje.....


Pomoooc :-(



-- 
Martin Kluvanek
ved.odd. vyvoje (head of development department)
TES s.r.o
Testovani Energetickych Systemu (Testing of Energetical Systems)

Prazska 597
674 01 Trebic
Czech republic
tel:568 8384 28  (+420 5688384 28)
fax:568 8384 27  (+420 5688384 27)
homepage: http://www.tesnet.cz



Další informace o konferenci Databases