Mega Code Archive

 
Categories / Oracle PLSQL / Large Objects
 

BFILE Comparisons

SQL> SQL> CREATE OR REPLACE DIRECTORY books_Dir AS 'C:\BOOKS'; Directory created. SQL> SQL> DECLARE   2       v_FILE1 BFILE;   3       v_FILE2 BFILE;   4       v_FILE3 BFILE;   5       v_GETLENGTH1 INTEGER;   6       v_GETLENGTH2 INTEGER;   7       v_GETLENGTH3 INTEGER;   8       v_COMPARELENGTH INTEGER;   9       v_COMPARERESULT INTEGER;  10  11  BEGIN  12       v_FILE1 := BFILENAME('BOOKS_DIR','1.GIF');  13       v_FILE2 := BFILENAME('BOOKS_DIR','2.GIF');  14       v_FILE3 := BFILENAME('BOOKS_DIR','5.GIF');  15  16       DBMS_LOB.FILEOPEN(v_FILE1);  17       DBMS_LOB.FILEOPEN(v_FILE2);  18       DBMS_LOB.FILEOPEN(v_FILE3);  19  20       v_GETLENGTH1 := DBMS_LOB.GETLENGTH(v_FILE1);  21       v_GETLENGTH2 := DBMS_LOB.GETLENGTH(v_FILE2);  22       v_GETLENGTH3 := DBMS_LOB.GETLENGTH(v_FILE3);  23  24       IF v_GETLENGTH1 < v_GETLENGTH2 THEN  25            v_COMPARELENGTH := v_GETLENGTH1;  26       ELSE  27            v_COMPARELENGTH := v_GETLENGTH2;  28       END IF;  29  30       v_COMPARERESULT := DBMS_LOB.COMPARE(v_FILE1,v_FILE2,v_COMPARELENGTH,1,1);  31  32       IF v_COMPARERESULT = 0 THEN  33            DBMS_OUTPUT.PUT_LINE('Both Files Are Identical');  34       ELSE  35            DBMS_OUTPUT.PUT_LINE('Both Files Are Different');  36       END IF;  37  38       IF v_GETLENGTH1 < v_GETLENGTH3 THEN  39            v_COMPARELENGTH := v_GETLENGTH1;  40       ELSE  41            v_COMPARELENGTH := v_GETLENGTH3;  42       END IF;  43  44       v_COMPARERESULT := DBMS_LOB.COMPARE(v_FILE1,v_FILE3,v_COMPARELENGTH,1,1);  45  46       IF v_COMPARERESULT = 0 THEN  47            DBMS_OUTPUT.PUT_LINE('Both Files Are Identical');  48       ELSE  49            DBMS_OUTPUT.PUT_LINE('Both Files Are Different');  50       END IF;  51  52       DBMS_LOB.FILECLOSEALL;  53  END;  54  / DECLARE * ERROR at line 1: ORA-22288: file or LOB operation FILEOPEN failed The system cannot find the path specified. ORA-06512: at "SYS.DBMS_LOB", line 523 ORA-06512: at line 16 SQL> --