Saturday, September 13, 2008

How to create External Scalar function in DB2 by JAVA library

วันนี้ได้มีโอกาสทดลองเขียน External Scalar function ของ DB2 เพราะว่า
ให้น้องฝึกงานเค้าทดลองใช้ ก็เลยต้องมาลองทำเองด้วย
ไม่ง่ายไม่อยากครับ เพียงแต่ก็ตาม Style ของ IBM เค้าล่ะครับ
มี Trick ที่แอบซ้อนอยู่เต็มไปซะหมด
เอาเป็นว่ามาดูวิธีทำกันเลยครับ

package whitegladiolus.db2;

/**
* @author Whitegladiolus
*/
public class FirstTime {

public static String echo(String message){
return "this sound echo from " + FirstTime.class.getName() + " your message is '" + message + "'";
}

public static void main(String[] args){
System.out.println(FirstTime.echo("sawasdee"));
}
}

จัดการทำมันให้เป็น jar file ซะครับในที่นี้ชื่อ whitegladiolus.jar
หลังจากนั้นก็ทำการ regist ให้ DB2 รู้จักด้วย command

CALL SQLJ.INSTALL_JAR('file:///C:/whitegladiolus.jar','MYJARX')

แนะนำว่าให้รัน command นี้ด้วย control center ที่ติดมากัน db2 จะง่ายที่สุดนะครับ
เพราะ front end บางตัวจะเกิดปัญหา FILEASBLOB ครับ
คือมันอ่าน BLOB input parameter ไม่ได้นั้นเอง

จากนั้นลองสร้าง function ชื่อ echo

create function echo(name varchar(128))
returns varchar(128) language java
external name 'MYJARX:chan.db2.FirstTime.echo' parameter style java
no sql

สังเกตว่าที่ external name จะมี format ประมาณนี้ครับ
jar_id:package.class.function

หลังจากนั้นก็ทดลองใช้งานได้เลยครับ

values (echo('hello external function'))

เพียงเท่านี้เราก็ได้ external function ไปใช้งานแล้วครับ

Whitegladiolus

ปล. สามารถอ่านเพิ่มเติมได้ที่
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/r0006425.htm

No comments: