java调用oracle 存储过程 以及游标使用
打開 PLSQL 創建一張:如果你沒有PLSQL? 找我
-- Create table
create table T_QUN_STUDY
(
? T_ID?????? NUMBER not null,
? T_NAME???? VARCHAR2(50),
? T_PASSWORD VARCHAR2(50)
)
tablespace USERS
? pctfree 10
? initrans 1
? maxtrans 255
? storage
? (
??? initial 64
??? minextents 1
??? maxextents unlimited
? );
-- Create/Recreate primary, unique and foreign key constraints
alter table T_QUN_STUDY
? add primary key (T_ID)
? using index
? tablespace USERS
? pctfree 10
? initrans 2
? maxtrans 255
? storage
? (
??? initial 64K
??? minextents 1
??? maxextents unlimited
? );
?
?
寫的存儲過程包和主體:
CREATE OR REPLACE PACKAGE BODY QUN_STUDY IS
? ------------------------------
? --插入新數據--
? --author:xiaohe--
? --date:2009-11-21--
? PROCEDURE INSERT_T_QUN_STUDY(P_ID?????? IN NUMBER,
?????????????????????????????? P_NAME???? IN VARCHAR2,
?????????????????????????????? P_PASSWORD IN VARCHAR2) IS
? BEGIN
??? INSERT INTO T_QUN_STUDY
????? (T_ID, T_NAME, T_PASSWORD)
??? VALUES
????? (P_ID, P_NAME, P_PASSWORD);
? END;
? ----------------------------
? --刪除信息--
? --author:xiaohe--
? --date:2009-11-21 --
? PROCEDURE DEL_T_QUN_STUDY(P_ID IN NUMBER, X_OUT_RECORD OUT NUMBER) IS
? BEGIN
??? DELETE T_QUN_STUDY TQS WHERE TQS.T_ID = P_ID;
??? X_OUT_RECORD := 0;
? EXCEPTION
??? WHEN OTHERS THEN
????? X_OUT_RECORD := -1;
? END;
? -------------------------------
? --查詢表所有信息--
? ----
? ----
? PROCEDURE QUERY_ALL_INFO(X_OUT_RECORD OUT NUMBER,
?????????????????????????? X_OUT_CURSOR OUT SYS_REFCURSOR) IS
? BEGIN
??? OPEN X_OUT_CURSOR FOR
????? SELECT * FROM T_QUN_STUDY;
??? X_OUT_RECORD := 0;
? EXCEPTION
??? WHEN OTHERS THEN
????? X_OUT_RECORD := -1;
? END;
END QUN_STUDY;
?
?
JAVA 代碼調用:
?
package com.procedure.core;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.OracleTypes;
public class ConnectionDataBase {
?private String name = "scott";
?private String password = "tiger";
?private String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
?private String driverClassName = "oracle.jdbc.driver.OracleDriver";
?/**
? * 返回數據庫 連接
? *
? * @return
? */
?public Connection getConn() {
??Connection conn = null;
??try {
???Class.forName(driverClassName);
???conn = DriverManager.getConnection(url, name, password);
??} catch (Exception e) {
???e.printStackTrace();
??}
??return conn;
?}
?public static void main(String[] agrs) throws SQLException {
??ConnectionDataBase cdb = new ConnectionDataBase();
??/**
?? * 添加 無輸出參數
?? */
??// Connection conn = cdb.getConn();
??// CallableStatement call = conn
??// .prepareCall("{call QUN_STUDY.INSERT_T_QUN_STUDY(?,?,?)}");
??// call.setInt(1, 4);
??// call.setString(2, "蒙-混混");
??// call.setString(3, "76544");
??// boolean flag = call.execute();
??// System.out.println(flag);
??/**
?? * 刪除 得到輸出參數
?? */
??// Connection conn = cdb.getConn();
??// CallableStatement call = conn
??// .prepareCall("{call QUN_STUDY.DEL_T_QUN_STUDY(?,?)}");
??// call.setInt(1, 4);
??// call.registerOutParameter(2, Types.INTEGER);
??// call.execute();
??// Integer result = call.getInt(2);
??// System.out.println("執行結果0為正常? -1為不正常" + result);
??/**
?? * 使用游標查詢 所有的信息
?? */
??Connection conn = cdb.getConn();
??/**
?? * 得到 存儲過程對象
?? */
??CallableStatement call = conn
????.prepareCall("{call QUN_STUDY.QUERY_ALL_INFO(?,?)}");
??/**
?? * 注冊 整型
?? */
??call.registerOutParameter(1, Types.INTEGER);
??/**
?? * 注冊游標類型
?? */
??call.registerOutParameter(2, OracleTypes.CURSOR);
??call.execute();
??/**
?? * 獲取第一個注冊的參數
?? */
??Integer result = call.getInt(1);
??/**
?? * 將游標 類型 轉換為 結果集
?? */
??ResultSet rs = (ResultSet) call.getObject(2);
??while (rs.next()) {
???System.out.println("id:" + rs.getInt(1));
???System.out.println("name:" + rs.getString(2));
???System.out.println("password:" + rs.getString(3));
??}
?}
}
OK? 基本就已經搞定了
如果大家有不明白 或者想共同學習的可以加群:2987841
也可以聯系我本人QQ:86780004
源代碼?(存儲過程包 建表SQL JAVA代碼)
?
/Files/xiaohejava/源代碼.rar?
轉載于:https://www.cnblogs.com/xiaohejava/archive/2009/11/22/1608046.html
總結
以上是生活随笔為你收集整理的java调用oracle 存储过程 以及游标使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机连按五次电源键 不说话就能报警?实测
- 下一篇: 添加,修改,删除