如何在Oracle中使用Java存储过程 (详解)
其实,这篇短文,我早就应该写了。因为,java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。 iihero on csdn) 一、如何创建java存储过程? 通常有三种方法来创建java存储过程。 1. 使用o
其实,这篇短文,我早就应该写了。因为,java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。
iihero on csdn)
一、如何创建java存储过程?
通常有三种方法来创建java存储过程。
1. 使用oracle的sql语句来创建:
e.g. 使用create or replace and compile java source named "
后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。
SQL> create or replace and compile java source named "javademo1"
2 as
3 import java.sql.*;
4 public class JavaDemo1
5 {
6 public static void main(String[] argv)
7 {
8 System.out.println("hello, java demo1");
9 }
10 }
11 /
Java 已创建。
SQL> show errors java source "javademo1"
没有错误。
SQL> create or replace procedure javademo1
2 as
3 language java name 'JavaDemo1.main(java.lang.String[])';
4 /
过程已创建。
SQL> set serveroutput on
SQL> call javademo1();
调用完成。
SQL> call dbms_java.set_output(5000);
调用完成。
SQL> call javademo1();
hello, java demo1
调用完成。
SQL> call javademo1();
hello, java demo1
调用完成。
2. 使用外部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')
2 /
Java 已创建。
SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc.main(java.lang.String[])';
2 /
过程已创建。
SQL> call testjavaproc();
调用完成。
SQL> execute testjavaproc;
PL/SQL 过程已成功完成。
SQL> set serveroutput on size 5000
SQL> call dbms_java.set_output(5000);
调用完成。
SQL> execute testjavaproc;
It's a Java Oracle procedure.
3. 我推荐的一种方法,直接使用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(1,grade);
pstmt.setInt(2,losal);
pstmt.setInt(3,hisal);
pstmt.executeUpdate();
pstmt.close();
}
catch(SQLException e) ...{
System.err.println("ERROR! Adding Salgrade: "
+ e.getMessage());
}
}
}
使用loadjava命令将其装载到服务器端并编译:
D:eclipse3.1workspacedbtest>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
查询一下状态:
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - 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)';
2 /
过程已创建。
SQL> set serveroutput on size 2000
SQL> call dbms_java.set_output(2000);
调用完成。
SQL> execute add_salgrade(6, 10000, 15000);
Creating new salgrade for EMPLOYEE...
PL/SQL 过程已成功完成。
SQL> select * from salgrade where grade=6;
GRADE LOSAL HISAL
---------- ---------- ----------
6 10000 15000
二、如何更新你已经编写的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(1,grade);
pstmt.setInt(2,losal);
pstmt.setInt(3,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(1, grade);
ResultSet rset = pstmt.executeQuery();
int res = 0;
if (rset.next())
...{
res = rset.getInt(1);
}
rset.close();
return res;
} catch (SQLException e)
...{
System.err.println("ERROR! Querying Salgrade: "
+ e.getMessage());
return -1; }
}
}
如何更新呢?
D:eclipse3.1workspacedbtest>dropjava -u scott -v OracleJavaProc
D:/tiger@iihero.oracledbeclipse3.1workspacedbtest>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';
2 /
函数已创建。
SQL> set serveroutput on size 2000
SQL> call dbms_java.set_output(2000);
调用完成。
SQL> select query_hisal(5) from dual;
QUERY_HISAL(5)
--------------
9999
全文完!
用法个人见解:不要手动drop java source, 不要手动drop procedure。

Innodbbufferpool mengurangkan cakera I/O dengan data caching dan halaman pengindeksan, meningkatkan prestasi pangkalan data. Prinsip kerjanya termasuk: 1. Bacaan Data: Baca data dari Bufferpool; 2. Penulisan Data: Selepas mengubah suai data, tulis kepada Bufferpool dan menyegarkannya ke cakera secara teratur; 3. Pengurusan cache: Gunakan algoritma LRU untuk menguruskan halaman cache; 4. Mekanisme Membaca: Muatkan halaman data bersebelahan terlebih dahulu. Dengan saiz bufferpool dan menggunakan pelbagai contoh, prestasi pangkalan data dapat dioptimumkan.

Berbanding dengan bahasa pengaturcaraan lain, MySQL digunakan terutamanya untuk menyimpan dan mengurus data, manakala bahasa lain seperti Python, Java, dan C digunakan untuk pemprosesan logik dan pembangunan aplikasi. MySQL terkenal dengan prestasi tinggi, skalabilitas dan sokongan silang platform, sesuai untuk keperluan pengurusan data, sementara bahasa lain mempunyai kelebihan dalam bidang masing-masing seperti analisis data, aplikasi perusahaan, dan pengaturcaraan sistem.

MySQL bernilai belajar kerana ia adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan dan analisis. 1) MySQL adalah pangkalan data relasi yang menggunakan SQL untuk mengendalikan data dan sesuai untuk pengurusan data berstruktur. 2) Bahasa SQL adalah kunci untuk berinteraksi dengan MySQL dan menyokong operasi CRUD. 3) Prinsip kerja MySQL termasuk seni bina klien/pelayan, enjin penyimpanan dan pengoptimum pertanyaan. 4) Penggunaan asas termasuk membuat pangkalan data dan jadual, dan penggunaan lanjutan melibatkan menyertai jadual menggunakan Join. 5) Kesilapan umum termasuk kesilapan sintaks dan isu kebenaran, dan kemahiran debugging termasuk menyemak sintaks dan menggunakan perintah menjelaskan. 6) Pengoptimuman prestasi melibatkan penggunaan indeks, pengoptimuman penyata SQL dan penyelenggaraan pangkalan data yang tetap.

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa