日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

编程开发之--Oracle数据库--存储过程和存储函数(2)

發(fā)布時間:2025/6/16 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程开发之--Oracle数据库--存储过程和存储函数(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一小結(jié)我們簡單介紹了存儲過程和存儲函數(shù),對存儲過程和存儲函數(shù)有了一個基本的了解,接下來介紹在java程序中如何調(diào)用我們創(chuàng)建的存儲過程和存儲函數(shù)

1、在應(yīng)用程序中調(diào)用我們的存儲過程

? ? ? 創(chuàng)建一個簡單的Java工程,如:TestOracle,在項目中新建lib文件夾,并拷貝ojdbc14.jar,添加到系統(tǒng)路徑中,目錄結(jié)構(gòu)如下:

? ? ? 在項目中創(chuàng)建一個用于連接數(shù)據(jù)庫以及與數(shù)據(jù)庫執(zhí)行交流的工具類JDBCUtils.java

package demo.utils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class JDBCUtils {private static String driver="oracle.jdbc.OracleDriver";private static String url="jdbc:oracle:thin:@localhost:1521:orcl";private static String user="scott";private static String password="scott";//注冊數(shù)據(jù)庫驅(qū)動static {try {Class.forName(driver); // DriverManager.registerDriver(driver);} catch (Exception e) {throw new ExceptionInInitializerError(e);}}//獲取數(shù)據(jù)庫連接public static Connection getConnection() {try {return DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}return null;}//釋放數(shù)據(jù)庫資源public static void release(Connection conn,Statement st,ResultSet rs) {if(rs!=null) {try {rs.close();} catch (Exception e) {e.printStackTrace();}finally {rs=null;}}if(st!=null) {try {st.close();} catch (Exception e) {e.printStackTrace();}finally {st=null;}}if(conn!=null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}finally {conn=null;}}} }

  創(chuàng)建我們的測試包,在包中創(chuàng)建我們的測試類TestProcedure.java

package demo.oracle;import java.sql.CallableStatement; import java.sql.Connection;import org.junit.Test;import demo.utils.JDBCUtils; import oracle.jdbc.internal.OracleTypes;public class TestProcedure {/*** create or replace PROCEDURE queryempinform(eno in number,pename out varchar2,psal out number,pjob out varchar2)*/@Testpublic void testProcedure() {//{call <procedure-name>[(<arg1>,<arg2>,...)]}String sql="{call queryempinform(?,?,?,?)}";Connection conn=null;CallableStatement call=null;try {//得到一個連接conn=JDBCUtils.getConnection();//通過連接創(chuàng)建出statmentcall=conn.prepareCall(sql);//對in參數(shù)進行賦值call.setInt(1, 7839);//對out參數(shù)進行申明call.registerOutParameter(2, OracleTypes.VARCHAR);call.registerOutParameter(3, OracleTypes.NUMBER);call.registerOutParameter(4, OracleTypes.VARCHAR);//設(shè)置文筆之后,開始我們的存儲過程的調(diào)用call.execute();//取出結(jié)果String name=call.getString(2);double sal=call.getDouble(3);String job=call.getString(4);System.out.println(name+"\t"+sal+"\t"+job);} catch (Exception e) {//遇到異常將其打印到控制臺輸出e.printStackTrace();}finally {//釋放數(shù)據(jù)庫資源JDBCUtils.release(conn, call, null);}} }

  啟動我們的單元測試,運行結(jié)果:

?

2、在應(yīng)用程序中調(diào)用我們的存儲函數(shù)

? ? ?在測試包中創(chuàng)建我們的測試類TestFunction.java

package demo.oracle;import java.sql.CallableStatement; import java.sql.Connection;import org.junit.Test;import demo.utils.JDBCUtils; import oracle.jdbc.internal.OracleTypes;public class TestFunction {/*** create or replace FUNCTION queryempincome(eno in number)return number*/@Testpublic void testFunction() {//{?=call <procedure-name>[(<arg1>,<arg2>,...)]}String sql="{?=call queryempincome(?)}";Connection conn=null;CallableStatement call=null;try {//得到數(shù)據(jù)庫連接conn=JDBCUtils.getConnection();//基于連接得到statmentcall=conn.prepareCall(sql);//對in參數(shù)賦值call.setInt(2, 7839);//對out參數(shù)進行申明call.registerOutParameter(1, OracleTypes.NUMBER);//執(zhí)行我們存儲函數(shù)的調(diào)用call.execute();//取得我們的結(jié)果double income=call.getDouble(1);System.out.println("該員工的年收入是:"+income);} catch (Exception e) {e.printStackTrace();}finally {JDBCUtils.release(conn, call, null);}} }

  啟動我們的單元測試,運行結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/ZeroMZ/p/9196836.html

總結(jié)

以上是生活随笔為你收集整理的编程开发之--Oracle数据库--存储过程和存储函数(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。