Day 18: XSQL


Learning In HomeOriginal Date: 30 Januari 2009

Dengan berbasiskan XSU, Oracle XDk menyediakan XSQL untuk memproses halaman yang berisi query SQL dan menghasilkan XML. Halaman XSQL ini umumnya di-proses sebagai halaman servlet, tetapi dapat juga dipergunakan dalam program Java dan tool command-line. XSQL Framework dapat ditemukan di file %ORACLE_HOME%\lib\oraclexsql.jar. Disini terdapat tiga jenis processor, yaitu oracle.xml.xsql.XSQLServlet untuk processor servlet, oracle.xml.xsql.XSQLCommandLine untuk processor command line, dan oracle.xml.xsql.XSQLRequest untuk processor dalam program Java.

Hari ini aku akan mencoba latihan menjalankan sebuah halaman XSQL sederhana melalui command-line. Sebelumnya, aku membuat terlebih dahulu file konfigurasi XSQL yang secara default bernama XSQLConfig.xml:


<?xml version="1.0" ?>
<XSQLConfig>
 <connectiondefs>
  <connection name="latihan">

     <username>scott</username>
     <password>tiger</password>
     <dburl>jdbc:oracle:oci:@localhost:1521:latihan</dburl>
     <driver>oracle.jdbc.driver.OracleDriver</driver>

     <autocommit>false</autocommit>
  </connection>
 </connectiondefs>
</XSQLConfig>

Pada contoh di atas, aku mendefinisikan sebuah koneksi bernama latihan yang merujuk ke schema SCOTT. File XSQLConfig.xml harus terletak pada salah satu lokasi yang tercantum di CLASSPATH. Berikutnya, aku akan membuat sebuah halaman XSQL sederhana yang men-query seluruh data dari tabel EMP:


<?xml version="1.0" ?>
<xsql:query connection="latihan" xmlns:xsql="urn:oracle-xsql">
  SELECT * FROM EMP
</xsql:query>

Setelah itu, aku menjalankan perintah berikut di command prompt:


java oracle.xml.xsql.XSQLCommandLine latihan.xsql

Tentu saja kemampuan XSQL tidak hanya sekedar query sederhana saja. Ia juga bisa menerima parameter dalam bentuk bind variables dan lexical substitution. Jika XSQL dijalankan untuk diproses sebagai servlet, maka bind variables ini diambil dari session dan cookies. Sebagai contoh sederhana, aku mengubah XSQL di atas menjadi:


<?xml version="1.0" ?>
<HASIL connection="latihan" xmlns:xsql="urn:oracle-xsql">
<xsql:query bind-params="employerNo">
  SELECT * FROM EMP WHERE EMPNO = ?
</xsql:query>
</HASIL>

Dengan demikian, aku bisa menjalankan XSQL di atas, sebagai servlet dengan URL seperti http://oracle.myHost.com/latihan.xsql?employerNo=7782, atau jika dipakai pada command line, aku menggunakan java oracle.xml.xsql.XSQLCommandLine latihan.xsql employerNo=7782.

Lexical substition hampir mirip seperti bind variables, hanya saja ia digunakan untuk substitusi syntax, seperti pada contoh:


SELECT EMPNO, ENAME FROM EMP ORDER BY {@kolomUrut}

XSQL juga mendukung aksi yang mirip if seperti pada contoh berikut:


<xsql:if-param name="kolomUrut" not-in-list="EMPNO,ENAME" ignore-case="yes">
  <xsql:set-page-param name="kolomUrut" value="ENAME" />
</xsql:if-param>

Pada contoh di atas, jika parameter kolomUrut bukan bernilai “EMPNO” dan “ENAME” (perbandingan case-insensitive), maka ia akan diatur agar bernilai “ENAME”.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: