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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 调用 Oracle 存储过程返回结果集

發(fā)布時(shí)間:2025/7/14 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 调用 Oracle 存储过程返回结果集 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 建立 ref cursor 類型和過程

Sql代碼

CREATE OR REPLACE PACKAGE typesASTYPE ref_cursor IS REF CURSOR;END;/CREATE TABLE STOCK_PRICES( ? ?RIC VARCHAR(6) PRIMARY KEY, ? ?PRICE NUMBER(7,2), ? ?UPDATED DATE ); ? ?SQL> insert into stock_prices values('2',11,sysdate);已創(chuàng)建 1 行。SQL> insert into stock_prices values('3',13,sysdate);已創(chuàng)建 1 行。SQL> insert into stock_prices values('4',15,sysdate);已創(chuàng)建 1 行。SQL> insert into stock_prices values('5',20,sysdate);已創(chuàng)建 1 行。SQL> insert into stock_prices values('6',21,sysdate);已創(chuàng)建 1 行。SQL> insert into stock_prices values('7',25,sysdate);已創(chuàng)建 1 行。SQL> commit;

?

CREATE OR REPLACE FUNCTION sp_get_stocks(v_price IN NUMBER)RETURN types.ref_cursorASstock_cursor types.ref_cursor;BEGINOPEN stock_cursor FORSELECT ric,price,updated FROM stock_prices WHERE price < v_price;RETURN stock_cursor;END;/SQL> var results refcursorSQL> exec :results := sp_get_stocks(20.0)SQL> print results

?

?

3. 從 Java 調(diào)用

Java代碼

import java.sql.*; ? ?import java.io.*; ? ?import oracle.jdbc.driver.*; ? ?public class JDBCDemo { ? ?/** ??* Compile-time flag for deciding which query to use ??*/ ??private boolean useOracleQuery = true; ? ?/** ??* Class name of Oracle JDBC driver ??*/ ??private String driver = "oracle.jdbc.driver.OracleDriver"; ? ?/** ??* Initial url fragment ??*/ ??private String url = "jdbc:oracle:thin:@"; ? ?/** ??* Standard Oracle listener port ??*/ ??private String port = "1521"; ? ?/** ??* Oracle style of calling a stored procedure ??*/ ??private String oracleQuery = "begin ? := sp_get_stocks(?); end;"; ? ?/** ??* JDBC style of calling a stored procedure ??*/ ??private String genericQuery = "{ call ? := sp_get_stocks(?) }"; ? ?/** ??* Connection to database ??*/ ??private Connection conn = null; ? ?/** ??* Constructor. Loads the JDBC driver and establishes a connection ??* ??* @param host the host the db is on ??* @param db the database name ??* @param user user's name ??* @param password user's password ??*/ ??public JDBCDemo(String host, String db, String user, String password) ? ?throws ClassNotFoundException, SQLException { ? ?// construct the url ? ?url = url + host + ":" + port + ":" + db; ? ?// load the Oracle driver and establish a connection ? ?try { ? ?Class.forName(driver); ? ?conn = DriverManager.getConnection(url, user, password); ? ?} ? ?catch (ClassNotFoundException ex) { ? ?System.out.println("Failed to find driver class: " + driver); ? ?throw ex; ? ?} ? ?catch (SQLException ex) { ? ?System.out.println("Failed to establish a connection to: " + url); ? ?throw ex; ? ?} ? ?} ? ?/** ??* Execute the stored procedure ??* ??* @param price price parameter for stored procedure ??*/ ??private void execute(float price) ? ?throws SQLException { ? ?String query = useOracleQuery ? oracleQuery : genericQuery; ? ?System.out.println("Query: " + query + "n"); ? ?CallableStatement stmt = conn.prepareCall(query); ? ?// register the type of the out param - an Oracle specific type ? ?stmt.registerOutParameter(1, OracleTypes.CURSOR); ? ?// set the in param ? ?stmt.setFloat(2, price); ? ?// execute and retrieve the result set ? ?stmt.execute(); ? ?ResultSet rs = (ResultSet)stmt.getObject(1); ? ?// print titleSystem.out.println("ric ? price ? ?updated"); System.out.println("--- ? ----- ? ?-------");// print the results ? ?while (rs.next()) { ? ?System.out.println(rs.getString(1) + " ? ? " + ? ?rs.getFloat(2) + " ? ? " + ? ?rs.getDate(3).toString()); ? ?} ? ?rs.close(); ? ?stmt.close(); ? ?} ? ?/** ??* Cleanup the connection ??*/ ??private void cleanup() throws SQLException { ? ?if (conn != null) ? ?conn.close(); ? ?} ? ?/** ??* Prints usage statement on stdout ??*/ ??static private void usage() { ? ?System.out.println("java com.enterprisedt.demo.oracle.JDBCDemo " + ? ?" host db user password price"); ? ?} ? ?/** ??* Runs the class ??*/ ??public static void main(String[] args) throws Exception { ? ?if (args.length != 5) { ? ?JDBCDemo.usage(); ? ?System.exit(1); ? ?} ? ?else { ? ?try { ? ?// assign the args to sensible variables for clarity ? ?String host = args[0]; ? ?String db = args[1]; ? ?String user = args[2]; ? ?String password = args[3]; ? ?float price = Float.valueOf(args[4]).floatValue(); ? ?// and execute the stored proc ? ?JDBCDemo jdbc = new JDBCDemo(host, db, user, password); ? ?jdbc.execute(price); ? ?jdbc.cleanup(); ? ?} ? ?catch (ClassNotFoundException ex) { ? ?System.out.println("Demo failed"); ? ?} ? ?catch (SQLException ex) { ? ?System.out.println("Demo failed: " + ex.getMessage()); ? ?} ? ?} ? ?} ? ?}

總結(jié)

以上是生活随笔為你收集整理的Java 调用 Oracle 存储过程返回结果集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎国产在线 | 日本免费一区二区三区最新 | 国产做爰视频免费播放 | 黄色片视频播放 | 亚洲一区二区三区四区av | 星空无限mv国产剧入选 | 红桃视频国产精品 | 国产99久久九九精品无码免费 | 99精品欧美一区二区三区 | 欧美一区二区三区视频在线观看 | 亚洲欧美国产日韩精品 | 久久精品无码一区二区三区毛片 | 伊人色综合久久天天 | 国产大片av| 人妻互换一区二区激情偷拍 | 男女被到爽流尿 | 激情戏网站 | 国产毛片精品国产一区二区三区 | 热九九精品 | 夜夜天天 | 在线91视频| 精品日韩一区二区 | 国产av日韩一区二区三区精品 | 色在线看 | 日韩精品视频久久 | av色在线| 免费看60分钟黄视频 | 国产精品一区二区久久久 | 黄色的一级片 | 丰满少妇大力进入 | 内射一区二区 | 最新中文字幕免费视频 | 国产做爰xxxⅹ久久久精华液 | 国产亚洲精品久久久久久青梅 | 久久久久久久久久久久久久久久久 | 欧美精品成人一区二区在线观看 | 精品视频999 | 亚洲AV无码国产精品午夜字幕 | 强公把我次次高潮hd | 色中色综合网 | 岛国大片在线观看 | 91综合网 | 成人乱人乱一区二区三区一级视频 | 深爱激情丁香 | 久久大陆 | 欧美老熟妇乱xxxxx | 国产传媒专区 | 亚洲精品在 | 999久久久精品视频 亚洲视频精品在线 | 久久亚洲国产精品 | 91视频污在线观看 | 亚洲欧美一区二区三区不卡 | 色校园| 国产精品毛片在线 | 亚洲视频a| 岛国精品在线播放 | 淫语视频 | 色哟哟在线 | 成人免费视频国产在线观看 | 国产夜夜爽 | 国产经典自拍 | 黄色动漫在线观看 | 老色批影视 | 中文在线日韩 | 毛片无遮挡高清免费观看 | 午夜久久久精品 | 香蕉视频黄污 | 亚洲不卡一区二区三区 | 成人网在线看 | 一区二区看片 | 中文字幕二区在线观看 | 精品久久久影院 | 国产精品色悠悠 | 激情拍拍| 91麻豆产精品久久久久久 | 青青操在线观看视频 | 蜜桃在线一区二区 | 在线视频资源 | 久久55| 天天色天天爱 | 亚洲女优在线 | 国产免费又爽又色又粗视频 | 少妇人妻综合久久中文字幕 | 色婷婷在线播放 | 青青草在线免费视频 | 手机成人av在线 | 99久久成人| 亚洲天堂一 | 国产日韩欧美一区二区东京热 | 邵氏电影《金莲外传2》免费观看 | 亚洲小说区图片区都市 | 亚洲男人的天堂在线视频 | 国产精品视频一二区 | 国产精品18久久久久久vr下载 | 韩国不卡av | 红桃视频网站 | 亚洲福利在线播放 | 欧美成人手机在线视频 | 亚洲一区二区三区四区av |