Java SQL

Java – Functions / CallableStatement Kullanımı

By
on
July 12, 2016

Merhaba, bugün ilk defa kullandığım ve büyük projelerde kullanılan Functions'tan biraz bahsetmek istiyorum.
Basit olarak şu şekilde bahsedeyim, daha doğrusu ben böyle yorumluyorum.

Geniş çaplı bir projeniz var.
Burada bir hesaplama yapıyorsunuz yada kullanıcının bir değeri projenin bir çok yerinde size lazım oluyor.
Bu işlemleride DB'de yapmak istiyorsunuz, iş yükünü DB yapsın istiyorsunuz.
PostgreSQL üzerinden gidecek olursak yeni SQL sorgu ekranı açıyoruz.
Dip bir anlatım olması için basit 2 sayıyı toplama işlemi yaptıracağım ama emin olun fazlasıyla işlevi olan bir yapı.
Açılan ekrana aşağıdaki kodu yazıyoruz.

CREATE FUNCTION toplama(sayi1 integer, sayi2 integer) RETURNS integer AS '
DECLARE
toplam integer;
BEGIN
toplam := sayi1 + sayi2;
return toplam;
END;
' LANGUAGE 'plpgsql';

Burada toplama adında bir FUNCTION  oluşturduk, 2 adet parametre tanımladık ve dönüş tipini belirttik.
( Default olarak IN olarak parametre ekliyor )
DB kısmı bu kadar.

Şimdi bunu nasıl kullanacağımızı göstermek istiyorum.
JDBC bağlantılarını yaptıktan sonra PreparedStatement olarak değil, CallableStatement olarak kullanım yapacağız.
Örnek olarak.


CallableStatement callableStatement = null;
Integer sonuc = null;
try {

callableStatement = getConnection().prepareCall("{ call toplama(?,?) }");
callableStatement.setInt(1, 24);
callableStatement.setInt(2, 12);
callableStatement.executeUpdate();

ResultSet result = callableStatement.executeQuery();

while (result.next()) {
sonuc = result.getInt("toplam");
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e);
}
return sonuc;

Sonuç size 36 olarak dönecektir.

Bugün ilk defa kullandığım bir yapı, bende yeniyim ama bundan sonra kişisel ve şirket tarafında geliştirdiğim projelere kesinlikle dahil edeceğim.
Herhangi bir sorunda yazın lütfen, bir hata durumunda bende yeni şeyler öğrenmiş olurum.
Önümüzdeki bir kaç ay Functions - Trigger Functions - Views gibi konular üzerinde durmaya çalışacağım.
Bunun yanında umarım Ubuntu Server'ada bakabilirim.
Kolay gelsin..
TAGS
RELATED POSTS

LEAVE A COMMENT

Sercan Toğrul
Java Developer - Kyrenia

I'm a java developer. I'm from Turkey but I live in Cyprus. You can see my skills and my notes here. Do you have a question you can send me email and I will answer!