以下的文章主要是通过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
相关文章
标签:Oracle