首页 > Linux操作系统 > Linux操作系统 > JAVA存储过程(转)
第一种方法总是返回同一个Connection对象,而二个方法每次都返回新的对象.
为了在数据库外面测试JAVA存储过程,需要使用Oracle JDBC在main()方法内取得一个连接.
通过命令行:loadjava可以把JAVA源码,类或jar或zip文件装入数据库.如果装入的是源代码,在默认的情况下是不会编译这些源码,直到第一次调用时才编译.如果加上 -resolve选项,则立即进行编译.
loadjava -resolve -user username/password javaFile.java
也可以在调试成功的JAVA文件头部加入:
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaClassTest" AS 如下:
CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaClassTest" AS
import java.sql.*;
import oracle.jdbc.*;
...
//JAVA类的主体
...
然后在SQL PLUS里,或TOAD里直接运行.
为了使用存储过程,需要创建调用规范,把参数和返回类型映射为PL/SQL类型,即发布存储过程.
语法如下:
CREATE [OR REPLACE] FUNCTION funciton_name [(parameter_list)]
RETURN SQL_TYEP {AS | IS}
LANGUAGE JAVA
NAME 'class_name.method_name([full_java_type[,...]]) return full_java_type';
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_list)] {AS | IS}
LANGUAGE JAVA
NAME 'class_name.method_name([full_java_type[,...]])';
之后,可以用:
SELECT function_name(parm) FROM DUAL;
的格式调用此函数.
在JAVA中,OUT或IN OUT参数必须对应为数组类型,即一般是适当类型的单元素数组,如:
Java方法:
--------------------------------------------------------------
public static void myMethod(int GUID,String[] outName){
outName[0] = myMethod(GUID);
}
Oracle存储过程
--------------------------------------------------------------
CREATE OR REPLACE PROCEDURE JAVA_TEST2(I_GUID IN NUMBER,O_NAME OUT VARCHAR2) AS
LANGUAGE JAVA
NAME 'JavaClassTest.myMethod(int,java.lang.String[])';
--------------------------------------------------------------
SET SERVEROUT ON
DECLARE
OUTVAR VARCHAR2(200);
BEGIN
JAVA_TEST2(3493,OUTVAR);
DBMS_OUTPUT.PUT_LINE(OUTVAR);
END;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/756652/viewspace-242212/ ,如需转载,请注明出处,否则将追究法律责任。