1. 如果在Java method里面需要访问Oracle数据库,不用加载jdbc driver,因为其已经包含在了Oracle数据库中;
2. 如果在Java class里面调用了第三方的类库,如JavaMail等,则需要将相应的JAR加载Oracle数据库中,加载方法如下:
loadjava -user sys/password -resolve -synonym mail.jar
From SQLPLUS:
sqlplus /nolog
connect sys/manager as sysdba;
SQL> call sys.dbms_java.loadjava('-v -r -grant PUBLIC -synonym javamail-1.2\mail.jar');
3. 编译Java class的JRE版本必须和Oracle JVM的版本一致,最新的Oracle 11gR2的JVM是1.5,所以,我们在创建java projects时应该选择JRE版本是1.5
查看oracle的jvm版本:
CREATE OR REPLACE FUNCTION get_java_property (prop IN VARCHAR2)
RETURN VARCHAR2 IS LANGUAGE JAVA
name 'java.lang.System.getProperty(java.lang.String) return java.lang.String';
SQL> SELECT get_java_property('java.version') FROM dual;
GET_JAVA_PROPERTY('JAVA.VERSION')
--------------------------------------------------------------------------------
1.5.0_10
4. 可以通过一个对USER_OBJECTS的查询来验证编译和加载的状态,如果正确,那么状态将是’VALID’的:
SELECT object_name, object_type, status
FROM user_objects WHERE object_type LIKE 'JAVA%';
5. 有些Java method需要一些Java权限,则需要运行类似于下面的语句:
sqlplus /nolog
connect sys/manager as sysdba;
execute dbms_java.grant_permission('SCOTT','SYS:java.net.SocketPermission','*' ,'connect,resolve');
COMMIT;
6. 如果是创建的PL/SQL Function,则可以使用输出函数查看,例如:
execute Dbms_Output.Put_Line(getEName(7839));