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.
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.