Home > Uncategorized > JSP – Oracle – Array Gonderme

JSP – Oracle – Array Gonderme

Bazı durumlarda JSP sayfamızdan Oracledaki procedurumuze array gondermek isteyebiliriz. Bunun icin ilk olarak yapmamız gereken Oracle’da bir array type tanımlamak.

CREATE OR REPLACE TYPE INTEGERARRAYTYPE_TY AS TABLE OF INTEGER

Daha sonra Procedurumuzun parametre kismina bu array tipinde bir degisken yazacagiz:


CREATE OR REPLACE FUNCTION INSERT_LINE(vLineCode IN VARCHAR, arrStations IN INTEGERARRAYTYPE_TY)

Daha sonra JSP sayfamızdan Array ile ilgili işlemleri yapmamız gerekiyor.
İlk olarak jsp sayfamızda ilgili sınıfları import edelim:


<%@page language="java" import="oracle.sql.ARRAY"%>
<%@page language="java" import="oracle.sql.ArrayDescriptor">

Daha sonra arrayimizi olusturup, import ettigimiz sinifa ait nesneleri olusturalim.


Integer arrStations[] = new Integer[3];
arrStations[0]= 0;
arrStations[1]= 1;
arrStations[2]= 2;

ArrayDescriptor desc1 = ArrayDescriptor.createDescriptor("INTEGERARRAYTYPE_TY",Conn);
ARRAY input1 = new ARRAY(desc1, Conn, arrStations);

ArrayDescriptor nesnesi olustururken, createDescriptor metodunu kullaniyoruz. Bu metod 2 parametre aliyor. İlki bizim Oracle da olusturdugumuz integer array tipi, digeri ise jspden oracle’a baglanirken kullandigimiz Connection sınıfından türetilmis Conn nesnesi.

Conn = DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:XE”,
“IETT”,”****”);

Buraya kadar olan islemlerde arrayimiz jsp sayfamizda olustu. Sirada, bunu gonderme islemi var.



CallableStatement cstmt = null;
String sql = "{call ? := INSERT_LINE(?,?)}";
try
{
cstmt = Conn.prepareCall(sql);
cstmt.setString(2,strLineCode_tr);
cstmt.setArray(3,input1);
cstmt.registerOutParameter(1,Types.INTEGER);
int b = cstmt.executeUpdate();
int sonuc = cstmt.getInt(1);

}
catch(Exception e) {}
finally {}

CallableStatement kullaniyoruz burada. Bu sinifin setArray fonksiyonunu cstmt nesnesinden cagiriyoruz. Bu metod 2 parametre aliyor. Ilki parametre sirasi, insert_line oracle fonksiyonunun 2.parametresi oluyor bu array. Return degeri ilk parametre oldugu icin dogal olarak sirasi 3 oluyor. setArray metodunun 2.parametresi ise ARRAY sınıfından türetilen nesne oluyor. Bu da yukarıda önceden ürettiğimiz ARRAY sınıfına ait input1 nesnesi.

Bu sekilde arrayimizi oracleda bir fonksiyona gondermis olduk. Biraz zahmetli bir ise benziyor. Eger daha performansli ve kolay bir yol bulursam yine paylasacagim.

Advertisements
Categories: Uncategorized
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: