PLSQL-TSQL ile Dosya Kontrolü, Boyut Öğrenmek

PL/SQL ile dosya kontrolü yapmak, boyutunu öğrenmek

PL/SQL ile bir oracle directorysinde dosya var mı kontrolü ve dosyanın boyutunu öğrenelim.
PLSQL ile dosyayı okuyacağımız dizinin oracle tarafında directory olarak tanımlanmış olması ve ilgili kullanıcının bu dizine read hakkı olması gerekiyor.

Önce directory’leri create edelim ve HR userına yetki verelim.(SYS)

SQL> create or replace directory hr_dir as '/home/oracle';
Directory created.
SQL> grant read, write on directory hr_dir to hr;
Grant succeeded.

Fonksiyonumuzu create edelim.(HR)

create or replace function FileExists(
p_DirName in varchar2,
p_FileName in varchar2
) return number
is
l_file_loc bfile;
begin
l_file_loc := bfilename(upper(p_DirName), p_FileName);
return dbms_lob.fileexists(l_file_loc);
end FileExists;

Fonksiyonumuzu directory ismi ve dosya ismi vererek test edelim.(HR)

SQL> select HR.FileExists1('hr_dir','deneme.txt') dosya_varmi from dual;
DOSYA_VARMI
-----------
1
SQL> select HR.FileExists1('hr_dir','deneme_test.txt') dosya_varmi from dual;
DOSYA_VARMI
-----------
0

Dosyamızın boyutunu plsql kodumuzda öğrenmek istersek;

 DECLARE
 v_fexists      BOOLEAN;
 v_file_length  NUMBER;
 v_block_size   BINARY_INTEGER;
 BEGIN
  UTL_FILE.FGETATTR('hr_dir', 'deneme_test.txt', v_fexists, v_file_length, v_block_size);
  DBMS_OUTPUT.PUT_LINE (v_file_length);
END;

T-SQL ile dosya kontrolü yapmak, boyutunu öğrenmek

create FUNCTION dbo.fc_FileExists(@path varchar(8000))
RETURNS BIT
AS
BEGIN
     DECLARE @result INT
     EXEC master.dbo.xp_fileexist @path, @result OUTPUT
     RETURN cast(@result as bit)
END;
GO

Fonksiyonumuzu test edelim.

select dbo.fc_FileExists('C:\deneme_test.txt');
-----
1
select dbo.fc_FileExists('D:\notlar\deneme_test.txt');
-----
0

Tagged: , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir