понедельник, 17 декабря 2012 г.

Java-процедуры и доступ к ним из PL/SQL



Чтобы обеспечить доступ к хранимым Java-процедурам из базы данных Oracle нужно:

1. Создать Java-класс по шаблону:

CREATE OR REPLACE AND RESOLVE JAVA SOURCE
NAMED some_name_for_util
AUTHID CURRENT_USER
AS
public class DelFile {
public static void doIt(java.lang.String fn) {
java.io.File f = new java.io.File(fn);
f.delete();
}
};
/

2. Откомпилировать Java-класс, проверить его и загрузить в базу данных.

3. Построить PL/SQL программу-упаковщик, которая будет вызывать загруженный Java-класс

CREATE OR REPLACE PROCEDURE EOS_DELFILE(fn VARCHAR2)
AUTHID CURRENT_USER
AS
LANGUAGE JAVA NAME 'EOS_DelFile.doIt(java.lang.String)';
/

4. Если необходимо создать пакет для созданных методов java-класса, то делается так:
create or replace PACKAGE some_package_name as
function CopyFile(fileGate varchar2, fileStorage varchar2) return nvarchar2 as
language java name 'eos_java_utils.CopyFile(java.lang.String,java.lang.String,java.lang.Integer) return java.lang.String';
function MoveFile(fileGate varchar2, fileStorage varchar2, direction NUMBER) return nvarchar2 as
end;

5. Дать привилегии
Если JAVA-класс будет работать с файловой системой, то нужны гранты на чтение,запись, удаление

BEGIN
DBMS_JAVA.GRANT_PERMISSION (user, 'SYS:java.io.FilePermission', 'твой_путь', 'read,write,delete');
END;



    Соответствие типов:

           ora                                                         java

    number                                       java.math.BigDecimal или int
    date                                            java.sql.Timestamp
    varchar2                                    java.lang.String
    clob                                           oracle.sql.clob
    raw                                             byte[]

Комментариев нет:

Отправить комментарий