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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)

發布時間:2024/4/13 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在本系列學習隨筆中的第2節我們留下了2個問題,我們現在討論在out參數中使用光標。

1、要在out參數中使用光標,我們需要申明一個包的結構,包的結構分為包頭和包體,包頭只負責申明,包體只負責實現。包頭、包體也是數據庫中的對象,與表是同一級別類型。

? ? 應用場景舉例:查詢某部門所有員工的所有信息

? ? 包頭:根據以下步驟創建

命名包名:mypackage:

在包中編寫我們自己的存儲過程或者存儲函數:

按下鍵盤ctrl+s,sql developer將自動存盤并且進行編譯:

接下來我們創建包的主體:

將會自動為我們創建要實現的包體部分:

然后我們將包體實現完整:

同樣,按下ctrl+s后,將自動幫我們存盤和編譯生成相應的包體結構樹:

使用desc語句查看包的結構:

2、在應用中訪問包中的存儲過程,需要帶上包的名字

? ? 在測試包中添加我們的測試類TestCursor.java

package demo.oracle;import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet;import org.junit.Test;import demo.utils.JDBCUtils; import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.internal.OracleTypes;public class TestCursor {/*** create or replace PACKAGE MYPACKAGE AS type empcursor is ref cursor;procedure queryEmpList(dno in number,empList out empcursor);END MYPACKAGE;*/@Testpublic void testCursor(){//{call <procedure-name>[(<agr1>,<agr2>,...)]}String sql="{call MYPACKAGE.queryEmpList(?,?)}";Connection conn=null;CallableStatement call=null;ResultSet rs=null;try {//獲得數據庫連接conn=JDBCUtils.getConnection();//根據連接創建statmentcall=conn.prepareCall(sql);//對in參數賦值call.setInt(1, 10);//對out參數進行申明call.registerOutParameter(2, OracleTypes.CURSOR);//執行我們的調用call.execute();//取出該部門中所有員工的信息,由于我們當前是Oracle的光標,Oracle的存儲過程,所以我們要對call進行轉換rs=((OracleCallableStatement)call).getCursor(2);while(rs.next()){//取出該員工的員工號、姓名、薪水、職位字段作為示例int empno = rs.getInt("empno");String name = rs.getString("ename");double salary = rs.getDouble("sal");String job = rs.getString("job");System.out.println(empno+"\t"+name+"\t"+salary+"\t"+job);}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtils.release(conn, call, rs);}} }

  啟動我們的單元測試,運行結果:

總結:存儲過程可以實現存儲函數所有的能力

轉載于:https://www.cnblogs.com/ZeroMZ/p/9196927.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。