Java ile Oracle’da Stored Procedure Oluşturmak

Nisan 4 2010

Oracle’ın Java’ya verdiği desteği bilmeyen yoktur. Bu gün Java ile Oracle veritabanı entegrasyonunu göstermek için Java ile bir stored procedure yazacağız. Stored procedure yazmaya başlamadan önce HR schemasının altında örnek bir tablo oluşturalım. Yazacağımız procedure bu tabloya INSERT yapacak. Eğer HR scheması değil de başka bir schema kullanmak istiyorsanız, ilerde anlatılan loadjava komutunda da aynı schema ismini vermeyi unutmayınız.

SQL> CREATE TABLE deneme (
     ID NUMBER,ISIM VARCHAR2(50),EMAIL VARCHAR2(50)
    );

Şimdi bu tabloya kayıt ekleyecek Java kodunu yazıyoruz. JDBC kullananlar DriverManager’da Oracle bağlantısını nasıl yazdığıma dikkat edeceklerdir. Bu kod, Oracle içerisinde çalışacağı için “varsayılan bağlantı” ile Oracle’a bağlanabiliyoruz.

import java.sql.*;
import oracle.jdbc.*;

public class JavaDeneme {

public static void deneme_tablosuna_kayit_ekle( int id, String isim, String email ) {

try {

Connection DB =
DriverManager.getConnection("jdbc:default:connection:");

String SQL ="INSERT INTO deneme VALUES (?,?,?)";

PreparedStatement Komut = DB.prepareStatement(SQL);

Komut.setInt(1,id);
Komut.setString(2, isim );
Komut.setString(3, email );

Komut.executeUpdate();

Komut.close();

}
catch(SQLException e) {
System.err.println( "Hata olustu: " + e.getMessage());
}
}
}

Bu kodları JavaDeneme.java olarak kaydediyoruz ve sonra Oracle ile birlikte gelen “loadjava” aracını kullanarak Oracle’a yüklüyoruz:

$ loadjava -u hr/hr -v -r JavaDeneme.java

Ben HR schemasına yükledim. Yüklediğimiz objeyi user_objects’i sorgulayarak görebiliriz:

SELECT object_name, object_type, status
   FROM user_objects WHERE object_name = 'JavaDeneme';

Java fonksiyonumuz (PLSQL için procedure çünkü değer döndürmüyor) için bir PLSQL procedure’ü oluşturuyoruz, böylece PLSQL içerisinden rahatlıkla çalıştırabileceğiz:

SQL> CREATE OR REPLACE PROCEDURE KayitEkle( id NUMBER, isim VARCHAR2, email VARCHAR2 )
AS LANGUAGE JAVA
NAME 'JavaDeneme.deneme_tablosuna_kayit_ekle(int, java.lang.String, java.lang.String )';
/

Görüldüğü üzere PLSQL procedure’üne gönderilecek parametreleri karşılık gelen Java tiplerine çeviriyoruz ve Java objemize gönderiyoruz.

SQL> EXEC KayitEkle( 1, 'Gokhan', 'gokhan@gokhan' );
SQL> SELECT * FROM deneme;

Sorgunun sonucunda KayitEkle procedure’ü ile eklediğimiz kayıtlar görülecektir.

Gökhan Atıl tarafından yayınlandı

Bir Cevap Yazın