使用Java来编写Oracle数据库的存储过程

Oracle里可以使用多种语言来编写存储过程,比如Pro*C/C++,PL/SQL,COBOL,在Oracle8i开始支持用Java编写存储过程。

如果非要写存储过程的话,做为以Java谋生的我,首选用Java编写,用PL/SQL需要记忆很多的语法(Pascal类的语法)和函数,远不如使用Java/JDBC这么轻车熟路。而且,DB2等数据库都支持Java存储过程,所以不比为每一种数据学习一种编写存储过程的方法了。

Java存储过程与一般的JDBC程序有所不同的是:

1.有安全限制,毕竟是在oracle内部运行的,不允许访问操作系统的资源,如文件。

2.获取数据库联接方式,connection = new OracleDriver().defaultConnection();

3.System.out,System.err,System.in等输入输出有所不同。可以利用某些命令重定向。

下面用Java 存储过程写一个Hello World的例子。

1)在plsqldeveloper里,java source里增加一个TestJava1类,

代码

create or replace and compile java source named TestJava1 as
public class TestJava1
{
public static void test()
{
System.out.println("Hello");
}
}

执行它,以保存并编译。

2)增加一个procedure,执行如下命令:

代码

create or replace procedure testJava1
as
language java name 'TestJava1.test()';

3)在command window里输入

代码

SET SERVEROUTPUT ON;
CALL dbms_java.set_output(2000);

以使System.out重定向到当前窗口;

在command window里输入,exec testJava1();

即可看到结果:

Hello

PL/SQL procedure successfully completed

时间: 2024-11-03 13:06:22

使用Java来编写Oracle数据库的存储过程的相关文章

使用Java调用Oracle数据库的存储过程实例

使用Java调用Oracle数据库的存储过程实例时间:2009-08-19 18:02:43来源:网络 作者:未知 点击:984次 一:无返回值的存储过程1.建立存储过程CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) ASBEGININSERT INTO T_TEST (I_ID,I_NAME) VALUES (PARA1, PARA2);END TESTA; 2.相应的JAVA程序impo一:无返回值

Oracle数据库使用存储过程上传大图片 blob参数 ,上传失败怎么会事?

问题描述 Oracle数据库使用存储过程上传大图片 blob参数 ,上传失败怎么会事? procedure proc1( Attachmen in out blob, --附件 ) is i integer; atta blob; begin dbms_lob.createtemporary(atta,true); select we.nextval into i from dual; insert into t_TrafficInfor (id,Attachment) values(i,EMP

JAVA频繁访问oracle数据库获取记录(间隔1秒就读取数据库记录或修改数据库记录),如何操作

问题描述 JAVA频繁访问oracle数据库获取记录(间隔1秒就读取数据库记录或修改数据库记录),使用什么连接方式最好(高效)??,用jdbc连接池好吗?,怎么使用jdbc连接池后释放资源而不关闭连接呢??,谢谢各位了!!

Java连接操作Oracle数据库代码详解_java

废话不多说了,直接给大家贴关键代码了,具体代码如下所示: package com.sp.test; import java.sql.*; import java.util.*; public class Text_lianxi extends Thread { public void run() { try { yunxing(); Thread.sleep(10000); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.pr

Oracle数据库编译存储过程假死问题

Oracle数据库教程编译存储过程假死问题 这种情况下如果强行终止存储过程编译,再次Recompile存储过程会发现还是挂死的,这个主要是由于强行终止后会话为INACTIVE状态,但是该会话却没有被真正的释放.使用如下语句查询出挂起的会话: SELECT V.OSUSER, V.PROCESS, V.PROGRAM, v.MACHINE, V.TERMINAL, V.MODULE, V.USERNAME, V.STATUS, V.SID, V.SERIAL#, 'alter system kil

在JAVA中连接Oracle数据库(例子)

oracle|数据|数据库 * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */package person.fane.test; import java.sql.*;/** * A JDBC test application for Oracle * @author Fane * @version 1.0.0 * @since JDK1.4 */public class OracleTest {    private final

JAVA简单链接Oracle数据库 注册和登陆功能的实现代码_java

复制代码 代码如下: //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断; public class User {   private String name;  private String loginname;  private String loginpsw;  public String getName() {   return name;  }  public void setName(String name) {   this.name = nam

java代码读取Oracle数据库的Blob信息乱码

问题描述 已经试过好多强制转化字符集,但是效果还是一样会乱码,希望解决此情况的人指教以下java代码:importjava.io.*;importoracle.jdbc.OracleResultSet;importoracle.sql.BLOB;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql

Java jdbc连接oracle数据库 出现网络适配器无法建立连接异常

问题描述 importjava.sql.*;publicclassTestJDBC{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubClass.forName("oracle.jdbc.driver.OracleDriver");Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@169.254