?? spcursors.java
字號:
//聲明本類包含在包examples.jdbc.oracle中
package examples.jdbc.oracle;
//聲明本類要引入的其他包和類
import java.sql.*;
import java.util.Properties;
/**
* 這類光標支持只存在于Oracle 7.2及以后版本,在文件"spcursors.sql"中的PL/SQL定義了這些存儲過程
*/
public class spcursors {
public static void main(String[] argv)
{
//聲明連接和結果集變量
java.sql.Connection conn = null;
java.sql.ResultSet rs = null;
java.sql.ResultSet rs1 = null;
java.sql.ResultSet rs2 = null;
java.sql.ResultSet rs3 = null;
//聲明weblogic SQL語句變量
weblogic.jdbc.common.OracleCallableStatement cstmt = null;
weblogic.jdbc.common.OracleCallableStatement cstmt2 = null;
weblogic.jdbc.common.OracleCallableStatement cstmt3 = null;
try {
//聲明屬性對象并賦值
Properties props = new Properties();
props.put("user","scott");
props.put("password","tiger");
props.put("server","DEMO");
//加載驅動程序
Driver myDriver = (Driver)
Class.forName("weblogic.jdbc.oci.Driver").newInstance();
//連接數據庫
conn = myDriver.connect("jdbc:weblogic:oracle", props);
// 這里我們使用支持Oracle光標綁定的WebLogic擴展。
//weblogic SQL語句變量
cstmt =
(weblogic.jdbc.common.OracleCallableStatement)conn.prepareCall("BEGIN OPEN ? FOR select * from emp; END;");
//注冊輸出參數
cstmt.registerOutParameter(1, java.sql.Types.OTHER);
// 執行
cstmt.execute();
//獲取結果集
rs = cstmt.getResultSet(1);
//打印結果集
printResultSet(rs);
//關閉結果集
rs.close();
//關閉語句對象
cstmt.close();
//weblogic SQL語句變量2
cstmt2 =
(weblogic.jdbc.common.OracleCallableStatement)conn.prepareCall("BEGIN single_cursor(?, ?); END;");
cstmt2.registerOutParameter(1, java.sql.Types.OTHER);
// 你也可以設置輸入參數, 執行語句。
cstmt2.setInt(2, 1);
//執行
cstmt2.execute();
//獲取結果集
rs = cstmt2.getResultSet(1);
//打印結果集
printResultSet(rs);
// 設置輸入參數, 執行語句。
cstmt2.setInt(2, 2);
cstmt2.execute();
//獲取結果集
rs = cstmt2.getResultSet(1);
//打印結果集
printResultSet(rs);
// 設置輸入參數, 執行語句。
cstmt2.setInt(2, 3);
cstmt2.execute();
//獲取結果集
rs = cstmt2.getResultSet(1);
//打印
printResultSet(rs);
// 關閉CallableStatement
cstmt2.close();
//weblogic SQL語句3,多光標
cstmt3 =
(weblogic.jdbc.common.OracleCallableStatement)conn.prepareCall("BEGIN multi_cursor(?, ?, ?); END;");
//注冊輸出參數,并執行
cstmt3.registerOutParameter(1, java.sql.Types.OTHER);
cstmt3.registerOutParameter(2, java.sql.Types.OTHER);
cstmt3.registerOutParameter(3, java.sql.Types.OTHER);
cstmt3.execute();
// 為每個參數創建結果集
rs1 = cstmt3.getResultSet(1);
rs2 = cstmt3.getResultSet(2);
rs3 = cstmt3.getResultSet(3);
// 打印結果集
printResultSet(rs1);
printResultSet(rs2);
printResultSet(rs3);
// 關閉結果集
rs1.close();
rs2.close();
rs3.close();
// 關閉CallableStatement
cstmt3.close();
} catch (Exception e) {
//異常處理
System.out.println("Exception was thrown: " + e.getMessage());
} finally { //關閉連接等資源
try {
if(rs != null)
rs.close();
if(rs1 != null)
rs1.close();
if(rs2 != null)
rs2.close();
if(rs3 != null)
rs3.close();
if(cstmt != null)
cstmt.close();
if(cstmt2 != null)
cstmt2.close();
if(cstmt3 != null)
cstmt.close();
if(conn != null)
conn.close();
} catch (SQLException sqle) {
System.out.println("SQLException was thrown: " + sqle.getMessage());
}
}
}
//打印結果集靜態方法
static void printResultSet(ResultSet rs)
throws SQLException
{
int rowcount = 0;
while(rs.next()) rowcount++;
System.out.println("Records = " + rowcount );
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -