知识大全 在Oracle中使用Java存储过程
Posted 过程
篇首语:须知少年凌云志,曾许人间第一流。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Oracle中使用Java存储过程相关的知识,希望对你有一定的参考价值。
在Oracle中使用Java存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java存储过程今后在各大数据库厂商中越来越流行 功能也越来越强大 这里以Oracle为例 介绍一下java存储过程的具体用法 一 如何创建java存储过程? 通常有三种方法来创建java存储过程 使用oracle的sql语句来创建 e g 使用create or replace and pile java source named <name> as 后边跟上java源程序 要求类的方法必须是public static的 才能用于存储过程 SQL> create or replace and pile java source named javademo as import java sql *; public class JavaDemo public static void main(String[] argv) System out println( hello java demo ) / Java 已创建 SQL> show errors java source javademo 没有错误 SQL> create or replace procedure javademo as language java name JavaDemo main(java lang String[]) ; / 过程已创建 SQL> set serveroutput on SQL> call javademo () 调用完成 SQL> call dbms_java set_output( ) 调用完成 SQL> call javademo () hello java demo 调用完成 SQL> call javademo () hello java demo 调用完成
使用外部class文件来装载创建 e g 这里既然用到了外部文件 必然要将class文件放到oracle Server的某一目录下边 public class OracleJavaProc public static void main(String[] argv) System out println( It s a Java Oracle procedure ) SQL> grant create any directory to scott; 授权成功 SQL> conn scott/tiger@iihero oracledb 已连接 SQL> create or replace directory test_dir as d:/oracle ; 目录已创建 SQL> create or replace java class using bfile(test_dir OracleJavaProc CLASS ) / Java 已创建 SQL> create or replace procedure testjavaproc as language java name OracleJavaProc main(java lang String[]) ; / 过程已创建 SQL> call testjavaproc() 调用完成 SQL> execute testjavaproc; PL/SQL 过程已成功完成 SQL> set serveroutput on size SQL> call dbms_java set_output( ) 调用完成 SQL> execute testjavaproc; It s a Java Oracle procedure 我推荐的一种方法 直接使用loadjava命令远程装载并创建 先创建一个类 e g import java sql *; import oracle jdbc *; public class OracleJavaProc //Add a salgrade to the database public static void addSalGrade(int grade int losal int hisal) System out println( Creating new salgrade for EMPLOYEE… ) try Connection conn = DriverManager getConnection( jdbc:default:connection: ) String sql = INSERT INTO salgrade + (GRADE LOSAL HISAL) + VALUES(? ? ?) ; PreparedStatement pstmt = conn prepareStatement(sql) pstmt setInt( grade) pstmt setInt( losal) pstmt setInt( hisal) pstmt executeUpdate() pstmt close() catch(SQLException e) System err println( ERROR! Adding Salgrade: + e getMessage()) 使用loadjava命令将其装载到服务器端并编译 D:eclipse workspacedbtest>loadjava u scott/tiger@iihero oracledb v resolve Or acleJavaProc java arguments: u scott/tiger@iihero oracledb v resolve OracleJavaProc java creating : source OracleJavaProc loading : source OracleJavaProc resolving: source OracleJavaProc 查询一下状态 连接到 Oracle i Enterprise Edition Release Production With the Partitioning OLAP and Oracle Data Mining options JServer Release Production SQL> SELECT object_name object_type status FROM user_objects WHERE object_type LIKE JAVA% ; OBJECT_NAME OBJECT_TYPE STATUS OracleJavaProc JAVA CLASS VALID OracleJavaProc JAVA SOURCE VALID 测试一下存储过程 SQL> create or replace procedure add_salgrade(id number losal number hisal num ber) as language java name OracleJavaProc addSalGrade(int int int) ; / 过程已创建 SQL> set serveroutput on size SQL> call dbms_java set_output( ) 调用完成 SQL> execute add_salgrade( ) Creating new salgrade for EMPLOYEE… PL/SQL 过程已成功完成 SQL> select * from salgrade where grade= ; GRADE LOSAL HISAL 二 如何更新你已经编写的java存储过程? 假如要往类OracleJavaProc里添加一个存储过程方法 如何开发? 正确的步骤应该是先dropjava 改程序 再loadjava e g 修改OracleJavaProc类内容如下 import java sql *; import oracle jdbc *; public class OracleJavaProc // Add a salgrade to the database public static void addSalGrade(int grade int losal int hisal) System out println( Creating new salgrade for EMPLOYEE… ) try Connection conn = DriverManager getConnection( jdbc:default:connection: ) String sql = INSERT INTO salgrade + (GRADE LOSAL HISAL) + VALUES(? ? ?) ; PreparedStatement pstmt = conn prepareStatement(sql) pstmt setInt( grade) pstmt setInt( losal) pstmt setInt( hisal) pstmt executeUpdate() pstmt close() catch(SQLException e) System err println( ERROR! Adding Salgrade: + e getMessage()) public static int getHiSal(int grade) try Connection conn = DriverManager getConnection( jdbc:default:connection: ) String sql = SELECT hisal FROM salgrade WHERE grade = ? ; PreparedStatement pstmt = conn prepareStatement(sql) pstmt setInt( grade) ResultSet rset = pstmt executeQuery() int res = ; if (rset next()) res = rset getInt( ) rset close() return res; catch (SQLException e) System err println( ERROR! Querying Salgrade: + e getMessage()) return ; 如何更新呢? D:eclipse workspacedbtest>dropjava u scott v OracleJavaProc D:/tiger@iihero oracledbeclipse workspacedbtest>loadjava u scott v resolve Or acleJavaProc/tiger@iihero oracledb java arguments: u scott/tiger@iihero oracledb v resolve OracleJavaProc java creating : source OracleJavaProc loading : source OracleJavaProc resolving: source OracleJavaProc 后边的应用示例 SQL> create or replace function query_hisal(grade number) return number as langu age java name OracleJavaProc getHiSal(int) return int ; / 函数已创建 SQL> set serveroutput on size SQL> call dbms_java set_output( ) 调用完成 SQL> select query_hisal( ) from dual; QUERY_HISAL( ) cha138/Article/program/Java/hx/201311/25916相关参考
在Oracle中用java编写存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracl
一无返回值的存储过程 存储过程为 CREATEORREPLACEPROCEDURETESTA(PARAINVARCHARPARAIN VARCHAR)
PL/SQL中为我们提供了调试存储过程的功能可以帮助你完成存储过程的预编译与测试 点击要调试的存储过程右键选择TEST 如果需要查看变量当然调试都需要在右键菜单中选择Adddebuginfor
VFP中调用Oracle的存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VFP由于其通
了解Oracle存储过程中的角色 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 角色(数据库权限
存储过程里的事务操作 createorreplaceprocedurepr_mypro(p_ainvarcharp_binvarcharp_countoutnumber) tempvarcha
Jsp中调用Oracle存储过程的小例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*执行
Error:PLS:必须说明标识符DATETIMELine:Text:aadatetime在oracle中没有datetime类型=================================
调用Oracle数据库中的存储过程需要两步走 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 存储
在Java中调用Oracle包中的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一先在or