国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle學習-光標類型的out參數

2024-08-29 13:54:48
字體:
來源:轉載
供稿:網友

在存儲過程中,有輸入的參數也有輸出參數,有一個問題是:如果我們要輸出的參數特別多,或者說要輸出一張表的所有字段,那張表可能有特別多的字段,我們要對每個輸出的字段都使用out參數嗎?可以是可以,但我們不可能這么做。我們想:能不能像java程序中,能不能定義一個集合或者一個bean容器來包含所有要輸出的字段。

下面就使用光標類型的out參數來輸出我們需要的數據信息:

我們可以新建一個包:包頭和包體

包頭:

CREATE OR REPLACE PACKAGE MYCORSOR AS    --創建一個叫mycorsor的包type user_cursor is ref cursor; --定義一個cursor類型的user_cursorPRocedure queryuserlist(userlist out user_cursor); --創建存儲過程,輸出cursor類型userlistEND MYCORSOR;包體:

CREATE OR REPLACEPACKAGE BODY MYCORSOR AS  procedure queryuserlist(userlist out user_cursor) AS  BEGIN    open userlist for select * from TB_USER; --打開光標  END queryuserlist;END MYCORSOR;然后在應用程序調用這個存儲過程

package jdbc.test;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import org.junit.Test;import jdbc.utils.JDBCUtils;import Oracle.jdbc.driver.OracleCallableStatement;import oracle.jdbc.driver.OracleTypes;public class testCursor {	@Test	public void testcursor() {		String sql = "{call MYCORSOR.queryuserlist(?)}";//包名.存儲過程		Connection conn = null;		CallableStatement call = null;		ResultSet rs = null;		try {			conn = JDBCUtils.getConn();			call = conn.prepareCall(sql);			call.registerOutParameter(1, OracleTypes.CURSOR);			call.execute();			rs = ((OracleCallableStatement) call).getCursor(1);--得到輸出內容			while (rs.next()) {				System.out.println("id=" + rs.getString("id") + "姓名為:" + rs.getString("name") + "年齡為"						+ rs.getString("age") + "月薪為" + rs.getString("money"));			}		} catch (Exception e) {			// TODO: handle exception		} finally {			JDBCUtils.release(conn, call, rs);--釋放資源		}	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇江市| 宝兴县| 彰武县| 枞阳县| 华容县| 邢台市| 泰宁县| 微山县| 津市市| 龙山县| 四会市| 广安市| 罗田县| 石柱| 巴塘县| 文山县| 芮城县| 布尔津县| 彝良县| 沅江市| 惠水县| 宜都市| 博湖县| 苏尼特右旗| 隆昌县| 邻水| 桃源县| 眉山市| 枝江市| 托克逊县| 宁国市| 宝应县| 密云县| 丁青县| 开封县| 横山县| 满城县| 山东省| 岳阳市| 湘乡市| 湛江市|