Чтобы обеспечить доступ к хранимым 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[]
Комментариев нет:
Отправить комментарий