導航:首頁 > 編程語言 > java創建oracle存儲過程

java創建oracle存儲過程

發布時間:2024-05-17 14:21:47

1. 濡備綍鍦∣racle涓浣跨敤java瀛樺偍榪囩▼

瀹炰緥浠g爜鍙傝冨備笅錛
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* Load JDBC Driver
* 鏈鍩烘湰鐨勬柟娉曢氳繃JDBC榪炴帴鏁版嵁搴
* @author Jacob
*
*/
public class LoadByPrimary {

public static void main(String[] args) throws ClassNotFoundException
{
String driver = "oracle.jdbc.OracleDriver";
Connection cn = null;
/**
* Class.forName鎵嬪姩鍔犺澆涓涓綾誨埌鏂規硶鍖猴紝Driver綾諱腑鍖呭惈鑷鍔ㄦ敞鍐岄┍鍔ㄧ殑闈欐佷唬鐮佸潡
* 浼氳嚜鍔ㄥ湪DriverManager涓娉ㄥ唽椹卞姩
*/
Class.forName(driver);
String url = "jdbc:oracle:thin:@localhost:1521:ORACLE"; //1521浠h〃絝鍙e彿錛岄粯璁ょ殑
String user = "鐢ㄦ埛鍚";
String pwd = "瀵嗙爜";
try
{
/*
* Connection鏄鎺ュ彛錛岃繑鍥炲兼槸涓涓寮曠敤瀵硅薄錛屾槸Oracle椹卞姩鎻愪緵瀹炵幇綾籵jdbc7.jar
* 浣跨敤JDBC API鎺ュ彛錛屽疄闄呬笂鏄椹卞姩瀹炵幇綾
*/
cn = DriverManager.getConnection(url,user,pwd);
Statement stmt = cn.createStatement();
String sql = "SELECT * FROM stu_emp WHERE deptno =10";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getInt("empno")+" "+
rs.getString("ename")+" "+
rs.getString("job"));
}
rs.close();
stmt.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(cn!=null)
{
cn.close();

2. Oracle資料庫的存儲過程怎麼寫

Oracle存儲過程基本語法:

CREATEORREPLACEPROCEDURE存儲過程名
IS
BEGIN
NULL;
END;

解釋:

行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做內skeleton存儲過程, 如果存在就覆容蓋它;
行2:
IS關鍵詞表明後面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束。


3. oracle 存儲過程 begin end

我理解就是用begin end界定一個代碼塊,跟C語言中的{}是同一個意思。
比如:
CREATE Procere()
as
begin
。。內。
/*
if ()
begin
...
end
else
begin
...
end
*/
end
而這里省略號位置如容果又出現了While循環或者IF ELSE判斷,當然就又需要界定范圍了,你不能在裡面用{},只能嵌套begin end。
我怎麼才看見這個貼呢。

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

分享我的代碼給你,這是最基本的版本,還有更好的

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* Load JDBC Driver
* 最基本的方法通過JDBC連接資料庫
* @author Jacob
*
*/
public class LoadByPrimary {

public static void main(String[] args) throws ClassNotFoundException
{
String driver = "oracle.jdbc.OracleDriver";
Connection cn = null;
/**
* Class.forName手動載入一個類到方法區,Driver類中包含自動注冊驅動的靜態代碼塊
* 會自動在DriverManager中注冊驅動
*/
Class.forName(driver);
String url = "jdbc:oracle:thin:@localhost:1521:ORACLE"; //1521代表埠號,默認的
String user = "用戶名";
String pwd = "密碼";
try
{
/*
* Connection是介面,返回值是一個引用對象,是Oracle驅動提供實現類ojdbc7.jar
* 使用JDBC API介面,實際上是驅動實現類
*/
cn = DriverManager.getConnection(url,user,pwd);
Statement stmt = cn.createStatement();
String sql = "SELECT * FROM stu_emp WHERE deptno =10";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getInt("empno")+" "+
rs.getString("ename")+" "+
rs.getString("job"));
}
rs.close();
stmt.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if(cn!=null)
{
cn.close();
}
}
catch (SQLException e2)
{
e2.printStackTrace();
}
}
}
}
這是通過preparedstatement實現更新數據,這里我把連接資料庫的方法進行了封裝,每次直接調用了。
public static void main(String[] args)
{
PreparedStatementDemo psd = new PreparedStatementDemo();
psd.updateSalary("JACOB",3000);
psd.selectSalary("JACOB");
}

public void updateSalary(String ename,double sal)
{
String sql = "Update stu_emp set sal= ? Where ename = ?";
Connection cn = null;
PreparedStatement ps = null;
try
{
cn = DBPUtil.getConnection();
ps = cn.prepareStatement(sql);
ps.setDouble(1, sal);
ps.setString(2, ename);
int num = ps.executeUpdate();
System.out.println("提示:總共有 "+num+" 條數據已經更新!");
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.stmtClose(ps);
DBUtil.connClose(cn);
}
}

public void selectSalary(String name)
{
String sql = "Select * From stu_emp Where ename = ?";
Connection cn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
cn = DBPUtil.getConnection();
ps = cn.prepareStatement(sql);
ps.setString(1, name);
rs = ps.executeQuery();
while(rs.next())
{
System.out.println(rs.getString("ename")+" 的工資是: "+ rs.getInt("sal"));
}
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.stmtClose(ps);
DBUtil.rsClose(rs);
DBUtil.connClose(cn);
}
}
}

5. Oracle 的存儲過程怎麼寫。

oracle 存儲過程的基本語法

1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...

3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;

4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

5.變數賦值
V_TEST := 123;

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;

7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;

8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試

6. 如何在Oracle中使用Java方法 詳細

java 存儲過程今後在各大數據庫廠商中越來越流行,功能也越來越強大。這里以 Oracle 為例,介紹一下java 存儲過程的具體用法。 一、如何創建java 存儲過程? 通常有三種方法來創建java 存儲過程。 1. 使用oracle 的sql 語句來創建: e.g. 使用create or replace and compile java source named "" 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[] args) 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 size 5000 SQL> call dbms_java.set_output(5000); --java 語言向控制台輸出 SQL> execute javademo1(); --execute 存儲過程名稱 hello, java demo1 調用完成。 2. 使用外部class 文件來裝載創建 Class 文件放置在其他目錄下調用方法 e.g. 這里既然用到了外部文件,必然要將class 文件放到oracle Server 的某一目錄下邊。 public class OracleJavaProc { public static void main(String[] argv) { System.out.println("It's a Java Oracle procere."); } } SQL> grant create any directory to scott; 授權成功。 SQL> conn 已連接。 SQL> create or replace directory test_dir as 'd:/oracle'; 目錄已創建。 using -- 使用 bfile---外部文件 SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS') 2 / Java 已創建。 SQL> create or replace procere testjavaproc as language java name 'OracleJavaProc.main(java.lang.String[])'; 2 / 過程已創建。 SQL> call testjavaproc(); 調用完成。 SQL> execute testjavaproc; PL/SQL 過程已成功完成。 SQL> set serveroutput on size 5000 SQL> call dbms_java.set_output(5000); 調用完成。 SQL> execute testjavaproc; It's a Java Oracle procere. 3. 我推薦的一種方法,直接使用loadjava 命令遠程裝載並創建。 先創建一個類, e.g. import java.sql.*; import oracle.jdbc.*; public class OracleJavaProc { //Add a salgrade to the database. public static void addSalGrade(int grade, int losal, int hisal) { System.out.println("Creating new salgrade for EMPLOYEE..."); try { Connection conn = DriverManager.getConnection("jdbc:default:connection:"); String sql = "INSERT INTO salgrade " + "(GRADE,LOSAL,HISAL) " + "VALUES(?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1,grade); pstmt.setInt(2,losal); pstmt.setInt(3,hisal); pstmt.executeUpdate(); pstmt.close(); } catch(SQLException e) { System.err.println("ERROR! Adding Salgrade: " + e.getMessage()); } } } 使用loadjava 命令將其裝載到伺服器端並編譯: D:eclipse3.1workspacedbtest>loadjava -u -v -resolve Or acleJavaProc.java arguments: '-u' '-v' '-resolve' 'OracleJavaProc.java' creating : source OracleJavaProc loading : source OracleJavaProc resolving: source OracleJavaProc 查詢一下狀態: 連接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Proction With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Proction SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%'; OBJECT_NAME -------------------------------------------------------------------------------- OBJECT_TYPE STATUS ------------------------------------ -------------- OracleJavaProc JAVA CLASS VALID OracleJavaProc JAVA SOURCE VALID 測試一下存儲過程: SQL> create or replace procere add_salgrade(id number, losal number, hisal num ber) as language java name 'OracleJavaProc.addSalGrade(int, int, int)'; 2 / 過程已創建。 SQL> set serveroutput on size 2000 SQL> call dbms_java.set_output(2000); 調用完成。 SQL> execute add_salgrade(6, 10000, 15000); Creating new salgrade for EMPLOYEE... PL/SQL 過程已成功完成。 SQL> select * from salgrade where grade=6; GRADE LOSAL HISAL ---------- ---------- ---------- 6 10000 15000 二、如何更新你已經編寫的java 存儲過程? 假如要往類OracleJavaProc 里添加一個存儲過程方法,如何開發? 正確的步驟應該是先dropjava, 改程序,再loadjava。 e.g.修改OracleJavaProc 類內容如下: import java.sql.*; import oracle.jdbc.*; public class OracleJavaProc { // Add a salgrade to the database. public static void addSalGrade(int grade, int losal, int hisal) ...{ System.out.println("Creating new salgrade for EMPLOYEE..."); try ...{ Connection conn = DriverManager.getConnection("jdbc:default:connection:"); String sql = "INSERT INTO salgrade " + "(GRADE,LOSAL,HISAL) " + "VALUES(?,?,?

閱讀全文

與java創建oracle存儲過程相關的資料

熱點內容
ps文件界面設置 瀏覽:779
c語言12位的數據應該怎麼存儲 瀏覽:953
將ape導入iphone 瀏覽:107
js組合快捷鍵 瀏覽:174
linux系統盤默認掛在的文件夾 瀏覽:667
淘寶數據包如何操作上架 瀏覽:567
vb編程中輸入cls是什麼意思 瀏覽:81
linuxtime服務 瀏覽:184
瘋狂安卓講義第二版代碼 瀏覽:420
老炮兒三小時版本下載 瀏覽:313
matlab怎麼調試程序 瀏覽:2
winxp升級win7的危害 瀏覽:496
網路沒連上卻不可用是怎麼回事 瀏覽:752
社區版本 瀏覽:738
怎麼查微信公眾號什麼時候開通的 瀏覽:717
安裝三菱編程閃退怎麼回事 瀏覽:488
手機怎麼創建word文件格式 瀏覽:694
c語言連接資料庫 瀏覽:887
數據線粉色和白色哪個是正 瀏覽:775
vb編程應注意什麼 瀏覽:855

友情鏈接