DB2版SQLJ訪問Oracle伺服器

來源:互聯網
上載者:User

DB2版SQLJ訪問Oracle伺服器

今天看到一本關於Oracle SQLJ的書於是想試一試。但我的Ubuntu 14.04隻安裝了Oracle的精簡用戶端。沒有SQLJ,於是想到用IBM-db2的sqlj,居然成功了。

一、從Oracle伺服器端把runtime12ee.jar  runtime12.jar  translator.jar拷入相應目錄

我的是放在$ORACLE_HOME/sqlj/lib,其中的$ORACLE_HOME是精簡用戶端的安裝目錄

/opt/ora11g/instantclient_11_2/

二、把$ORACLE_HOME/sqlj/lib/*加入到CLASSPATH中

三、用sqlj程式轉換時需要加上-compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* 選項

四、執行個體

/* Emp.sqlj 來源程式

  sqlj -compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* Emp.sqlj

  javac Emp.java

  java Emp

 */

import java.sql.SQLException; /* 匯入所需的 Java 類 */

import sqlj.runtime.*; //Java 運行時支援

import sqlj.runtime.ref.*;

import oracle.sqlj.runtime.*; //Oracle 擴充

#sql iterator MyIter(String empno, String ename);


class Emp /* 主類 */

/* 定義 iterator 處理結果集 */

{

 public static void main(String args[])

 {

 try {

 /* 串連到 Oracle 資料庫,這裡使用的是 Thin 驅動程式 */

 Oracle.connect("jdbc:oracle:thin:@192.168.0.110:1521:orcl", "scott", "tiger");

 Emp st = new Emp();

 st.runExample();

 } catch(SQLException e) {

 System.err.println("Error running the example:" + e);

 } finally {

 try {

 Oracle.close();

 } catch(SQLException e) { }

 }

 }

 void runExample() throws SQLException { /* 定義 runExample 函數擷取並處理結果 */

 MyIter iter; /* 聲明 iterator 類的一個執行個體 */

 #sql iter = {select EMPNO,ENAME from emp}; /* 執行嵌入的 SQL 陳述式,並返回結果給 iterator */

 


 while(iter.next()) {

 /* 迴圈遍曆結果的每一條記錄並輸出 */

 System.out.print("EMPNO = " + iter.empno()+"      ");

 System.out.println("ENAME = " + iter.ename());

 }

 }

}

運行:

$sqlj -compile=false -C-classpath=$ORACLE_HOME/sqlj/lib/* Emp.sqlj

$ javac Emp.java

$ java Emp

EMPNO = 7369      ENAME = SMITH

EMPNO = 7499      ENAME = ALLEN

EMPNO = 7521      ENAME = WARD

EMPNO = 7566      ENAME = JONES

EMPNO = 7654      ENAME = MARTIN

EMPNO = 7698      ENAME = BLAKE

EMPNO = 7782      ENAME = CLARK

EMPNO = 7788      ENAME = SCOTT

EMPNO = 7839      ENAME = KING

EMPNO = 7844      ENAME = TURNER

EMPNO = 7876      ENAME = ADAMS

EMPNO = 7900      ENAME = JAMES

EMPNO = 7902      ENAME = FORD

EMPNO = 7934      ENAME = MILLER

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.