1. java調用ORACLE存儲過程

給你個方法,自己參研吧。
private static final String DELETE_ENTRIES_BY_DATE_RANGE_SPNAME = "";

public int deleteByDateRange(Date start, Date end) {
// get connection
Connection conn = getConnection();
try {
// set auto commit false
conn.setAutoCommit(false);
// retrieve callableStatement by
CallableStatement cs = prepareCallableStatement(conn,
);
cs.setString("application_name", applicationName);
cs.setString("mole_name", moleName);
cs.setDate("startDate", Util.convUtilDateToSqlDate(start));
cs.setDate("endDate", Util.convUtilDateToSqlDate(end));

cs.registerOutParameter("deleted_rows", java.sql.Types.INTEGER);

cs.execute();

int affectedRows = cs.getInt("deleted_rows");
// transaction commit
conn.commit();
// close cs
cs.close();

return affectedRows;

2. 如何在Oracle中使用Java存儲過程

給你一個簡單的例子(其實自己搜索:資料庫 java存儲過程 就可以了)
使用oracle的sql語句來創建:
e.g. 使用create or replace and compile java source named "<name>" as
後邊跟上java源程序。要求類的方法必須是public static的,才能用於存儲過程。
SQL> create or replace and compile java source named "javademo1"
2 as
3 import java.sql.*;
4 public class JavaDemo1
5 {
6 public static void main(String[] argv)
7 {
8 System.out.println("hello, java demo1");
9 }
10 }
11 /
Java 已創建。
SQL> show errors java source "javademo1"
沒有錯誤。
SQL> create or replace procere javademo1
2 as
3 language java name 'JavaDemo1.main(java.lang.String[])';
4 /
過程已創建。
SQL> set serveroutput on
SQL> call javademo1();
調用完成。
SQL> call dbms_java.set_output(5000);
調用完成。
SQL> call javademo1();
hello, java demo1
調用完成。
SQL> call javademo1();
hello, java demo1
調用完成。

3. 關於oracle存儲過程調用java(在線等)

1、創抄建或者代替已有的目錄。襲目錄名為test_dir,路徑為d:\的目錄;
2、使用bfile來創建或者代替目錄test_dir下的TEST.CLASS的java的類文件
3、查詢object_name,object_type,STATUS這三個欄位在 user_objects里的數據
4、用java語言調用名稱為'TEST.main(java.lang.String[])'來創建或者代替已有的存儲過程test_java

其實就是:首先創建一個目錄test_dir,路徑d:\,然後就在目錄名為test_dir下生成test.class(類似於JAVAC這樣)然後就創建test_java存儲過程,把test.class裡面的內容放到到test_java存儲過程裡面

個人理解,如有誤,歡迎指出。

4. 在java中怎麼調用oracle的存儲過程

java下實現調用oracle的存儲過程和函數
在oracle下創建一個test的賬戶,然後按一下步驟執行:
1.創建表:STOCK_PRICES

--創建表格
CREATE TABLE STOCK_PRICES(
RIC VARCHAR(6) PRIMARY KEY,
PRICE NUMBER(7,2),
UPDATED DATE );

2.插入測試數據:

--插入數據
INSERT INTO stock_prices values('1111',1.0,SYSDATE);
INSERT INTO stock_prices values('1112',2.0,SYSDATE);
INSERT INTO stock_prices values('1113',3.0,SYSDATE);
INSERT INTO stock_prices values('1114',4.0,SYSDATE);

3.建立一個返回遊標: PKG_PUB_UTILS

--建立一個返回遊標
CREATE OR REPLACE PACKAGE PKG_PUB_UTILS IS
--動態游標
TYPE REFCURSOR IS REF CURSOR;
END PKG_PUB_UTILS;

4.創建和存儲過程:P_GET_PRICE

--創建存儲過程
CREATE OR REPLACE PROCEDURE P_GET_PRICE
(
AN_O_RET_CODE OUT NUMBER,
AC_O_RET_MSG OUT VARCHAR2,
CUR_RET OUT PKG_PUB_UTILS.REFCURSOR,
AN_I_PRICE IN NUMBER
)
IS
BEGIN
AN_O_RET_CODE := 0;
AC_O_RET_MSG := '操作成功';

OPEN CUR_RET FOR
SELECT * FROM STOCK_PRICES WHERE PRICE<AN_I_PRICE;
EXCEPTION
WHEN OTHERS THEN
AN_O_RET_CODE := -1;
AC_O_RET_MSG := '錯誤代碼:' || SQLCODE || CHR(13) || '錯誤信息:' || SQLERRM;
END P_GET_PRICE;

5.創建函數:

--創建函數:F_GET_PRICE
CREATE OR REPLACE FUNCTION F_GET_PRICE(v_price IN NUMBER)
RETURN PKG_PUB_UTILS.REFCURSOR
AS
stock_cursor PKG_PUB_UTILS.REFCURSOR;
BEGIN
OPEN stock_cursor FOR
SELECT * FROM stock_prices WHERE price < v_price;
RETURN stock_cursor;

5. 在Oracle中,如何用java調用其存儲過程

//通過編寫的連接類創建一個連接
dbconn db = new dbconn();
Connection con1 = db.conn;
String callSQL1 = new String();
ResultSet rs1 = null;
//創建一個CallableStatement變數st1來調用存儲過程信息
CallableStatement st1 = null;
try {
st1 = con1.prepareCall("{ call p(?,?,?,?) }");

st1.setString(1, "參數1");
st1.setString(2, "參數2");
st1.setString(3, "參數3");
st1.registerOutParameter(4,Types.INTEGER); //此處4 代表第一個"?" 則表示存儲過程返回的值 這里要注意Types的類型,當需要有返回值時

st1.execute();
System.out.println(st1.getInt(4));//輸出存儲過程的返回值,當有返回值時
} catch (Exception error) {
try {
con1.rollback(); //操作不成功則回退
} catch (Exception ex9) {
ex9.printStackTrace();
}
out.print("系統出錯" + error.getMessage());
} finally {
try {
if (st1 != null) {
st1.close();
}
} catch (Exception error) {

}
db.disconnect();
}

給你提供一個參考,希望樓主點贊。

6. 如何在ORACLE中使用JAVA存儲過程

比如下面寫的是Oracle的一個存儲過程:
create or replace procere queryempinfo(eno in number,
pename out varchar2,
psal out number,
pjob out varchar2)
as
begin
--得到該員工的姓名 月薪和職位
select ename, sal, job into pename, psal, pjob from emp where empno = eno;
end;

Java調用Oracle的存儲過程
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url, username, password);
stat = conn.prepareCall(sql);

// 一個輸入參數和三個輸出參數
stat.setInt(1, 7566);
stat.registerOutParameter(2, OracleTypes.VARCHAR);
stat.registerOutParameter(3, OracleTypes.NUMBER);
stat.registerOutParameter(4, OracleTypes.VARCHAR);
stat.execute();

String name = stat.getString(2);
int sal = stat.getInt(3);
String job = stat.getString(4);

System.out.println("name: " + name + ", sal: " + sal + ", job: " + job);

} catch (Exception e) {
e.printStackTrace();
} finally {
close(conn, stat, rs);
}

7. 怎麼在java代碼中設置oracle存儲過程中的入參和出參

public String insertJCSP(Map parmaters) {
// TODO Auto-generated method stub
String str=null;
Connection conn = null;
CallableStatement csm = null;
conn = (Connection) sqlSession.getSqlSessionFactory().openSession()
.getConnection();
try {
csm = conn
.prepareCall("{Call pr_insert_JcInfo(?,?,?)}"); //調用存儲過程
csm.setString(1, (String) parmaters.get("lottId")); //第一個入參數
csm.setString(2, (String) parmaters.get("idata"));//第二個入參數
csm.registerOutParameter(3, java.sql.Types.VARCHAR);//返回參數
csm.execute();
str = csm.getString(3); //取得返回參數

8. Oracle存儲過程中,如何像JAVA那樣,將一段代碼用try{}cache(e){}包起來

說實話我沒在存儲過程中寫過異常處理,所以沒法給出處理代碼
我找到了兩篇博客講的oracle存儲過程中的異常處理,希望對你有用
http://blog.csdn.net/jojo52013145/article/details/6585833
http://www.cnblogs.com/linjiqin/archive/2011/04/18/2019905.html

9. oracle存儲過程怎麼和java代碼

2、什麼時候需要用存儲過程
如果伺服器定義了存儲過程,應當根據需要決定是否要用存儲過程。存儲過程通常是一些經常要執行的任務,這些任務往往是針對大量的記錄而進行的。在伺服器上執行存儲過程,可以改善應用程序的性能。這是因為:
.伺服器往往具有強大的計算能力和速度。
.避免把大量的數據下載到客戶端,減少網路上的傳輸量。
例如,假設一個應用程序需要計算一個數據,這個數據需要涉及到許多記錄。如果不使用存儲過程的話,把這些數據下載到客戶端,導致網路上的流量劇增。
不僅如此,客戶端可能是一台老掉牙的計算機,它的運算速度很慢。而改用存儲過程後,伺服器會很快地把數據計算出來,並且只需傳遞一個數據給客戶端,其效率之高是非常明顯的。
3、存儲過程的參數

10. java調用oracle存儲過程

/*這是我的一個調用Oracle procere 的一個class test*/
package com.sp;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;

public class Test_fenye {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection ct;
CallableStatement cs;
// TODO Auto-generated method stub
try{
//載入驅動
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//建立連接
ct= DriverManager.getConnection("jdbc:odbc:testsp","scott","tiger");
//創建callablestatement調用存儲過程
cs=ct.prepareCall("{call pro_fenye(?,?,?,?,?,?)}");
//給前三個in輸入 ?賦值,後三個為out返回參數
cs.setString(1, "emp");
cs.setInt(2, 5);
cs.setInt(3, 1);
//注冊
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
//執行
cs.execute();
//取出值
int rowNum=cs.getInt(4);
int pagecount=cs.getInt(5);
ResultSet rs =(ResultSet)cs.getObject(6);

System.out.println("rownumber "+ rowNum);
System.out.println("pagecount "+pagecount);
}catch(Exception ex){
ex.printStackTrace();
}
}

}