
ใน Oracle XML Publisher 5.6.2 นี้ ได้มี API ที่ไว้สร้าง XML เพื่อเป็น Datasource ให้กับ Report ขึ้นมา ซึ่งเราจะมาดูกันว่าหากเราจะสร้าง Datasource นั้นเราจะต้องทำอย่างไร
- เริ่มแรกให้เราไป Download Oracle XML Publisher 5.6.2 นี้มาก่อนครับ
- ขั้นตอนถัดมาให้เรานำ Library มาใช้ โดย Library จะอยู่ใน <zip_dir>/manual/lib
- จากนั้นให้เราสร้าง xml ขึ้นมาเพื่อไว้ใช้เป็น template ของ Datasource โดยในตัวอย่างนี้จะทำการดึงข้อมูลจาก Table Employee ใน HR Schema ซึ่งเป็น Sample Schema ใน Oracle Database มาแสดงโดยที่มี JOB_ID เป็น Parameter นะครับ
- หลังจากที่เรามี Template สำหรับ Datasource แล้วก็มา นำมาใช้ใน Code Java ตามตัวอย่างได้เลยครับ
<?xml version="1.0" encoding="WINDOWS-1252" ?>
<dataTemplate name="employeeData" description="Employees Data"
defaultPackage="" Version="1.0">
<parameters>
<parameter name="job" dataType="character"/>
</parameters>
<dataQuery>
<sqlStatement name="Q1">
<![CDATA[
SELECT em.employee_id,
em.first_name||' '||em.last_name ename,
em.email,
em.phone_number,
em.salary,
em.commission_pct
FROM employees em
WHERE em.Job_Id = :job
]]>
</sqlStatement>
</dataQuery>
<dataSructure>
<group name="G_EMP" source="Q1">
<element name="ID" value="employee_id"/>
<element name="NAME" value="ename"/>
<element name="EMAIL" value="email"/>
<element name="PHONE_NUMBER" value="phone_number"/>
<element name="SALARY" value="salary"/>
<element name="COMMISSTION" value="commission_pct"/>
</group>
</dataSructure>
</dataTemplate>
package my.xml;
import com.sun.java.util.collections.Hashtable;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.apps.xdo.XDOException;
import oracle.apps.xdo.dataengine.DataProcessor;
public class XMLSource {
public static void main(String[] args) {
try {
// Create Connection And Connect To Database
Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@192.168.2.19:1521:ORCL";
java.sql.Connection jdbcConnection = DriverManager.getConnection(url,
"HR", "HR");
// New DataProcess and Set Template
DataProcessor dataProcessor = new DataProcessor();
dataProcessor.setDataTemplate("employeeDS.xml");
// Create Parameter Hashtable and set to DataProcess
Hashtable parameters = new Hashtable();
parameters.put("job", "IT_PROG");
dataProcessor.setParameters(parameters);
// Set Connection to DataProcess
dataProcessor.setConnection(jdbcConnection);
// Generate Datasource to XML File
dataProcessor.setOutput("employeeData.xml");
// Process
dataProcessor.processData();
} catch (SQLException e) {
System.out.println("SQLException " + e.getMessage());
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException " + e.getMessage());
} catch (XDOException e) {
System.out.println("XDOException" + e.getMessage());
}
}
}

ท่านสามารถอ่านบทความนี้ผ่านทาง Oracle-Java อีกทางนึงครับ