Trong ví dụ, mssqllink
là tên của liên kết cơ sở dữ liệu sử dụng DG4ODBC và trình điều khiển ODBC SQL Server của Easysoft để kết nối với SQL Server.
CREATE DIRECTORY IMAGE AS '/tmp'; DECLARE curid NUMBER; execid NUMBER; src_file BFILE:=NULL; dst_file BLOB; lgh_file BINARY_INTEGER; file_status boolean:=false; amt BINARY_INTEGER := 2000; -- The maximum image size for this example is 2K. buf RAW(2000); bound_raw long raw; pos INTEGER := 1; BEGIN src_file := BFILENAME('IMAGE', 'test.jpg'); file_status := dbms_lob.fileexists( src_file )=1; if file_status then -- open the file dbms_lob.createtemporary(dst_file, true, dbms_lob.call); dbms_lob.fileopen (src_file); -- determine length lgh_file := dbms_lob.getlength (src_file); dbms_output.put_line('Size : ' || lgh_file); if lgh_file<2001 then -- Read the file -- dbms_lob.loadfromfile(dst_file, src_file, lgh_file); Begin LOOP dbms_output.put_line('Pos : ' || pos); dbms_lob.read(src_file, amt, pos, buf); bound_raw :=bound_raw || buf; -- Process contents of buffer pos := pos + amt; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN dbms_output.put_line('End of data reached'); dbms_lob.fileclose(src_file); END; -- Insert the blob field end; dbms_output.put_line('Buffer : ' || buf); curid := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@mssqllink; -- Replace this with the name of your linked table DBMS_HS_PASSTHROUGH.PARSE@mssqllink(curid,'insert into blb values (1,?)'); -- Destination table in SQL Server DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW@mssqllink(curid, 1, buf ); execid := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@mssqllink(curid); DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@mssqllink(curid); commit; dbms_output.put_line('Data sent to Easysoft SQL Server ODBC driver'); else dbms_output.put_line('File size is too big for Oracle'); end if; else dbms_output.put_line('Can not open file.'); end if; END; /