Java調(diào)用Oracle存儲(chǔ)過(guò)程詳解
Java調(diào)用Oracle存儲(chǔ)過(guò)程詳解
步驟:
1、編寫(xiě)Oracle存儲(chǔ)過(guò)程
2、編寫(xiě)數(shù)據(jù)庫(kù)獲取連接工具類(lèi)
3、編寫(xiě)簡(jiǎn)單應(yīng)用調(diào)用存儲(chǔ)過(guò)程
實(shí)現(xiàn):
1、Oracle存儲(chǔ)過(guò)程:
/*測(cè)試表*/ create table test( id varchar2(32), name varchar2(32) ); /*存儲(chǔ)過(guò)程 插入數(shù)據(jù)*/ CREATE OR REPLACE PROCEDURE insert_procedure( PARA1 IN VARCHAR2, PARA2 IN VARCHAR2 ) AS BEGIN INSERT INTO test (id, name) VALUES (PARA1, PARA2); END insert_procedure; /*存儲(chǔ)過(guò)程 返回結(jié)果集*/ CREATE OR REPLACE PROCEDURE select_procedure( para_id IN VARCHAR2, name OUT sys_refcursor /* 這個(gè)sys_refcursor類(lèi)型在SYS.STANDARD包中 */ ) AS BEGIN OPEN name FOR SELECT * FROM test WHERE id = para_id; END;
2、JDBC工具類(lèi)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; public static final String URL = "jdbc:oracle:thin:@localhost:1521/orcl"; public static final String USERNAME = "pfm"; public static final String PASSWORD = "pfm"; /** * 通過(guò)靜態(tài)代碼塊 注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng) */ static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 獲得Connection * * @return */ public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 獲得Statement * * @return */ public static Statement getStatement() { Statement st = null; try { st = getConnection().createStatement(); } catch (SQLException e) { e.printStackTrace(); } return st; } /** * 關(guān)閉ResultSet * * @param rs */ public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉Statement * * @param st */ public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉Connection * * @param conn */ public static void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 關(guān)閉全部 * * @param rs * @param sta * @param conn */ public static void closeAll(ResultSet rs, Statement sta, Connection conn) { closeResultSet(rs); closeStatement(sta); closeConnection(conn); } }
3、調(diào)用存儲(chǔ)過(guò)程:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import oracle.jdbc.driver.OracleTypes; /** * 測(cè)試調(diào)用存儲(chǔ)過(guò)程 * */ public class StoredTest { public static void main(String[] args) { insert_call(); //select_call(); } /** * 執(zhí)行存儲(chǔ)過(guò)程 插入數(shù)據(jù) */ public static void insert_call() { Connection conn = DBUtil.getConnection(); PreparedStatement pst = null; CallableStatement proc = null; // 創(chuàng)建執(zhí)行存儲(chǔ)過(guò)程的對(duì)象 try { proc = conn.prepareCall("{ call insert_procedure(?,?) }"); proc.setString(1, "1"); // 設(shè)置第一個(gè)輸入?yún)?shù) proc.setString(2, "hello call"); // 設(shè)置第一個(gè)輸入?yún)?shù) proc.execute();// 執(zhí)行 } catch (SQLException e) { e.printStackTrace(); } finally { try { // 關(guān)閉IO流 proc.close(); DBUtil.closeAll(null, pst, conn); } catch (Exception e) { e.printStackTrace(); } } } /** * 執(zhí)行存儲(chǔ)過(guò)程 查詢(xún)數(shù)據(jù) */ public static void select_call() { Connection conn = DBUtil.getConnection(); CallableStatement stmt; try { stmt = conn.prepareCall("{ call select_procedure(?, ?) }"); // 用此調(diào)用方法不能實(shí)現(xiàn)多行語(yǔ)法 stmt.setString(1, "1"); stmt.registerOutParameter(2, OracleTypes.CURSOR); stmt.execute(); ResultSet rs = (ResultSet) stmt.getObject(2); while (rs.next()) { System.out.println(rs.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.closeConnection(conn); } } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過(guò)程詳解
- 詳解java調(diào)用存儲(chǔ)過(guò)程并封裝成map
- MyBatis創(chuàng)建存儲(chǔ)過(guò)程的實(shí)例代碼_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java實(shí)現(xiàn)調(diào)用MySQL存儲(chǔ)過(guò)程詳解
- 詳解Java的JDBC API的存儲(chǔ)過(guò)程與SQL轉(zhuǎn)義語(yǔ)法的使用
- java編程調(diào)用存儲(chǔ)過(guò)程中得到新增記錄id號(hào)的實(shí)現(xiàn)方法
- Java調(diào)用MySQL存儲(chǔ)過(guò)程并獲得返回值的方法
- java調(diào)用mysql存儲(chǔ)過(guò)程實(shí)例分析
- Java中調(diào)用SQL Server存儲(chǔ)過(guò)程詳解
- java調(diào)用oracle分頁(yè)存儲(chǔ)過(guò)程示例
- java調(diào)用Oracle存儲(chǔ)過(guò)程的方法實(shí)例
- Java下使用Oracle存儲(chǔ)過(guò)程(詳解)
- Java存儲(chǔ)過(guò)程調(diào)用CallableStatement的方法
相關(guān)文章
springboot相互依賴(lài) server相互引用方式
這篇文章主要介紹了springboot相互依賴(lài) server相互引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02SpringBoot+Quartz+數(shù)據(jù)庫(kù)存儲(chǔ)的完美集合
這篇文章主要介紹了SpringBoot+Quartz+數(shù)據(jù)庫(kù)存儲(chǔ)的示例代碼,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02SpringBoot中實(shí)現(xiàn)啟動(dòng)任務(wù)的實(shí)現(xiàn)步驟
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)啟動(dòng)任務(wù)的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析
這篇文章主要介紹了Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式
這篇文章主要介紹了Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09springboot關(guān)閉druid監(jiān)控 druid2改配置文件無(wú)效的解決
這篇文章主要介紹了springboot關(guān)閉druid監(jiān)控 druid2改配置文件無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05基于Jackson實(shí)現(xiàn)API接口數(shù)據(jù)脫敏的示例詳解
用戶(hù)的一些敏感數(shù)據(jù),例如手機(jī)號(hào)、郵箱、身份證等信息,在數(shù)據(jù)庫(kù)以明文存儲(chǔ),但在接口返回?cái)?shù)據(jù)給瀏覽器(或三方客戶(hù)端)時(shí),希望對(duì)這些敏感數(shù)據(jù)進(jìn)行脫敏,所以本文就給大家介紹以惡如何利用Jackson實(shí)現(xiàn)API接口數(shù)據(jù)脫敏,需要的朋友可以參考下2023-08-08