1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

以下的文章主要是通过Oracle sql语句来创建java的存储过程的详细内容描述,如果你对Oracle sql语句来创建java的存储过程相关的实际操作有兴趣了解的话,以下的文章将会给你提供相关的知识。

使用Oracle sql语句来创建:

e.g. 使用

createorreplaceandcompilejavasourcenamed"<name>"as

后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。

SQL>createorreplaceandcompilejavasourcenamed"javademo1" 
as 
importjava.sql.*; 
publicclassJavaDemo1 
{ 
publicstaticvoidmain(String[]argv) 
{ 
System.out.println("hello,javademo1"); 
} 
} 
/

Java 已创建。

SQL>showerrorsjavasource"javademo1"

没有错误。

SQL>createorreplaceprocedurejavademo1 
as 
languagejavaname'JavaDemo1.main(java.lang.String[])'; 
/

过程已创建。

SQL>setserveroutputon 
SQL>calljavademo1();

调用完成。

SQL>calldbms_java.set_output(5000);

调用完成。

SQL>calljavademo1(); 
hello,javademo1

调用完成。

SQL>calljavademo1(); 
hello,javademo1

调用完成。 2. 使用外部class文件来装载创建 e.g. 这里既然用到了外部文件,必然要将class文件放到Oracle Server的某一目录下边。

授权成功。

SQL>connscott/tiger@iihero.Oracledb

已连接。

SQL>createorreplacedirectorytest_diras'd:\Oracle';

目录已创建。

SQL>createorreplacejavaclassusingbfile(test_dir,'OracleJavaProc.CLASS') 
2/

Java 已创建。

SQL>createorreplaceproceduretestjavaprocas
languagejavaname'OracleJavaProc.main(java.lang.String[])'; 
2/

过程已创建。

SQL>calltestjavaproc();

调用完成。

SQL>executetestjavaproc;

PL/Oracle SQL 过程已成功完成。

SQL>setserveroutputonsize5000 
SQL>calldbms_java.set_output(5000);

调用完成。

SQL>executetestjavaproc; 
It'saJavaOracleprocedure.

3. 我推荐的一种方法,直接使用loadjava命令远程装载并创建。 先创建一个类, e.g.

importjava.sql.*; 
importOracle.jdbc.*; 
publicclassOracleJavaProc...{ 
Addasalgradetothedatabase. 
publicstaticvoidaddSalGrade
(intgrade,intlosal,inthisal)...{ 
System.out.println
("CreatingnewsalgradeforEMPLOYEE..."); 
try...{ 
Connectionconn= 
DriverManager.getConnection("jdbc:default:connection:"); 
Stringsql= 
"INSERTINTOsalgrade"+ 
"(GRADE,LOSAL,HISAL)"+ 
"VALUES(?,?,?)"; 
PreparedStatementpstmt=conn.prepareStatement(sql); 
pstmt.setInt(1,grade); 
pstmt.setInt(2,losal); 
pstmt.setInt(3,hisal); 
pstmt.executeUpdate(); 
pstmt.close(); 
} 
catch(SQLExceptione)...{ 
System.err.println("ERROR!AddingSalgrade:" 
+e.getMessage()); 
} 
} 
} 

使用loadjava命令将其装载到服务器端并编译:

D:eclipse3.1workspacedbtest>loadjava-uscott/tiger@iihero.Oracledb-v-resolveOr 
acleJavaProc.java 
arguments:'-u''scott/tiger@iihero.Oracledb'-v''-resolve''OracleJavaProc.java' 
creating:sourceOracleJavaProc 
loading:sourceOracleJavaProc 
resolving:sourceOracleJavaProc

查询一下状态:

连接到:

Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production 
WiththePartitioning,OLAPandOracleDataMiningoptions 
JServerRelease9.2.0.1.0-Production 
SQL>SELECTobject_name,object_type,
statusFROMuser_objectsWHEREobject_typeLIKE'JAVA%'; 
OBJECT_NAME 
OBJECT_TYPESTATUS 
OracleJavaProc 
JAVACLASSVALID 
OracleJavaProc 
JAVASOURCEVALID 

测试一下存储过程:

SQL>createorreplaceprocedureadd_salgrade(idnumber,losalnumber,hisalnum 
ber)aslanguagejavaname'OracleJavaProc.addSalGrade(int,int,int)'; 
2/

过程已创建。

SQL>setserveroutputonsize2000 
SQL>calldbms_java.set_output(2000);

调用完成。

SQL>executeadd_salgrade(6,10000,15000); 
CreatingnewsalgradeforEMPLOYEE...

PL/SQL 过程已成功完成。

SQL>select*fromsalgradewheregrade=6; 
GRADELOSALHISAL 
61000015000 

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11511.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。