Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstawianie obrazu z Oracle do SQL Server

W przykładzie mssqllink to nazwa łącza bazy danych, które używa DG4ODBC i sterownika ODBC SQL Server firmy Easysoft do łączenia się z 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;
/

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring Batch ORA-08177:nie można zserializować dostępu do tej transakcji podczas uruchamiania pojedynczego zadania, poziom izolacji ZSERYLIZOWANY

  2. Wprowadzenie do zmiennych PL/SQL w bazie danych Oracle

  3. Nie można załadować biblioteki DLL „OraOps10.dll”

  4. Co to jest Oracle SQL i PL/SQL? Wszystko, co powinien wiedzieć początkujący

  5. Samozadowolenie prowadzi do:Ryzyko staje się rzeczywistością