一、JDBC的開發步驟
在Oracle資料庫當中創建一個函式
查詢指定員工的年薪–使用存盤程序來實作(傳入引數,第二個引數將值存盤到引數當中)
引數:是員工編號
輸出:年薪
create or replace procedure proc_gettotalsal(vempno in number,vtotalsal out number)
is
begin
select sal*12 + nvl(comm,0) into vtotalsal from emp where empno = vempno;
end;
二、在Eclipse當中使用JDBC連接Oracle,通過自定義函式查詢內容
1、創建一個專案工程

2、創建一個libs檔案將對應的jar引入到其中


3、創建包和類

4、通過JDBC連接Oracle資料庫以及
package com.itzheng.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
import oracle.jdbc.driver.OracleTypes;
import oracle.jdbc.oracore.OracleType;
/*
1、匯入驅動包
2、第二部注冊驅動
3、獲取連接
4、獲取執行SQL的statement
5、封裝引數
6、執行SQL
7、獲取結果
8、釋放資源
*/
public class TestProcedure {
@Test
public void test1() throws Exception {
//注冊驅動
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、獲取連接
//(1)設定對應的引數
String url = "jdbc:oracle:thin:@192.168.75.100:1521:orcl";
String username = "scott";
String password = "tiger";
//(2)獲取連接
Connection conn = DriverManager.getConnection(url, username, password);
//prepareCall在執行存盤程序之前,必須注冊所有OUT引數的型別,他們的值是在執行后通過此類提供的get方法獲取的,
//3、獲取執行SQL的statement
//這幾SQL陳述句的作用就是呼叫Oracle當中自定義的函式,一個人為輸入引數,第二個為輸出引數
String sql = "{call proc_gettotalsal(?,?)}";
CallableStatement state = conn.prepareCall(sql);//通過鏈接獲取對應的statement
//向SQL當中的?設定對應的值 ---設定輸入引數
state.setInt(1, 7788);//第一個索引
//注冊輸出引數將查詢到的值放入到OracleTypes,并或 去對應的數字型別
state.registerOutParameter(2, OracleTypes.NUMBER);//第二個位Oracle執行函式回傳的結果
//4、執行statement
state.execute();
//5、獲取執行結果
int tatalsal = state.getInt(2);
//輸出結果
System.out.println("工資:"+tatalsal);
//6、釋放資源
state.close();
conn.close();
}
}

三、JDBC呼叫存盤函式
@Test
public void test2() throws Exception {
// 注冊驅動
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2、獲取連接
// (1)設定對應的引數
String url = "jdbc:oracle:thin:@192.168.75.100:1521:orcl";
String username = "scott";
String password = "tiger";
// (2)獲取連接
Connection conn = DriverManager.getConnection(url, username, password);
// prepareCall在執行存盤程序之前,必須注冊所有OUT引數的型別,他們的值是在執行后通過此類提供的get方法獲取的,
// 3、獲取執行SQL的statement
String sql = "{?=call func_getsal(?)}";
CallableStatement state = conn.prepareCall(sql);
//4、封裝引數
//注冊回傳值型別引數
state.registerOutParameter(1, OracleTypes.NUMBER);//將回傳值存盤到OracleTypes
//設定第二個引數
state.setInt(2, 7788);
//5、執行SQL
state.execute();
//6、獲取結果
int int1 = state.getInt(1);//獲取對應的值
System.out.println("年薪"+int1);
//7、釋放資源
state.close();
conn.close();
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/90719.html
標籤:其他
上一篇:JDBC(一)
下一篇:資料庫MySQ語法的基本使用
