ความสามารถที่โดดเด่นอย่างหนึ่งของ PL/SQL ในการติดต่อกับ Java คือการรับและส่ง Parameter เป็นแบบ Array Object
ทำให้นักพัฒนาโปรแกรมด้วยภาษา java สามารถส่ง parameters ให้กับ Store Procedure ได้เป็นจำนวนมาก กรณีนี้จะพบบ่อยใน Application ขนาดใหญ่
Enviroment ที่ใช้ในตัวอย่าง
- Oracle Driver ที่ชื่อว่า ojdbc14.jar(ใช้กับ Oracle 10g)
- Java SDK 1.4
- Database schema ที่มี user คือ TEST_USER
- import oracle.sql.ARRAY, oracle.sql.ArrayDescriptor ลงใน Class java
1. ใช้คำสั่ง create Array Object ขึ้นมาใน Database ก่อน ตัวอย่างเช่น
SQL> CREATE OR REPLACE TYPE OBJ_ARRAY AS TABLE OF NUMBER ;
(วิธีการ create นั้นต้องlogin เข้า database ก่อน ด้วย SQLPLUS หรือ tool ต่าง ๆ )
เราก้อจะได้ Array Object ที่ชื่อว่า OBJ_ARRAY ซึ่งเป็น Array ของ ตัวแปรที่มี type เป็น NUMBER(ตรงกับ datatype ที่อยู่ใน Java คือ BigDecimal )
เก็บอยู่ในฐานข้อมูล Oracle เพื่อให้ นักพํฒนาระบบ เรียกใช้
2. ใน class ของ Java นั้น จะแสดงตัวอย่างในส่วนของการเก็บข้อมูลลง Array Object ของ Java (ในที่นี้คือ BigDecimal)
# test.java class
..................
..................
BigDecimal [] bigArr = {new BigDecimal(1),new BigDecimal(2),new BigDecimal(3)};
// สร้าง Instance ของ BigDecimal array ที่ชื่อ ว่า bigArr มีสมาชิก 3 ตัว มีค่า {1,2,3}
// สร้าง Instance ของ BigDecimal array ที่ชื่อ ว่า bigArr มีสมาชิก 3 ตัว มีค่า {1,2,3}
2.1
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TEST_USER.OBJ_ARRAY", conn);
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TEST_USER.OBJ_ARRAY", conn);
// conn คือ Instance ของ Connection Class ที่ใช้ต่อต่อกับ Database, user ใน database คือ TEST_USER
// คำสั่งนี้เพื่อ Mapping array Instance ของทั้ง java และInstance ที่อยู่ในDatabase
2.2
ARRAY array = new ARRAY(descriptor, conn, bigArr);
// สร้าง Instance ที่ชื่อว่า array ซึ่งสามารถ โยนไปให้ Store Procedure ใน PL/SQL ประมวลผลต่อไป
นี่เป็นตัวอย่างคร่าว ๆ สำหรับเป็นแนวทางให้ผู้ที่สนใจศึกษาต่อ ในครั้งหน้าเราจะมาเจาะลึกลงเนื้อหาในส่วนของการนำข้อมูล Array ที่ได้นี้ไปใช้ในส่วนของ PL/SQL ต่อไป
No comments:
Post a Comment