什麼是存儲過程: 存儲過程是一組為了完成特定功能的sql語言集,存儲過程經過編譯後儲存在資料庫服務端中,類似oracle創建自增長SEQUENCE。 存儲過程的功能及優點: 儲存過程只在創建時編譯一次存儲在資料庫服務端中,以後調用無需再編譯,可以重覆使用,比一般的sql語句執行效率快,並且可以設定某 ...
-
什麼是存儲過程:
- 存儲過程是一組為了完成特定功能的sql語言集,存儲過程經過編譯後儲存在資料庫服務端中,類似oracle創建自增長SEQUENCE。
-
存儲過程的功能及優點:
-
儲存過程只在創建時編譯一次存儲在資料庫服務端中,以後調用無需再編譯,可以重覆使用,比一般的sql語句執行效率快,並且可以設定某用戶才可以使用該存儲過程,提高了安全性。
-
存儲過程基本使用
-
-
創建簡單的存儲過程:
-
-
create or replace procedure [存儲過程名稱]
(
[參數1] (in/out) [參數類型],---in為傳入參數,out為輸出參數
[參數2] (in/out) [參數類型],
)is
begin
[sql體];
(select name into [參數1] from test where id=[參數2];)
end
-
-
-
-
在java中調用存儲過程
-
-
-
/**
*
*/
package com.test.procedure;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.internal.OracleTypes;
public class TestProcedure {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
Connection conn = getConn();
// String sql = "SELECT FULLNAME FROM USERS";
// PreparedStatement pstm = conn.prepareStatement(sql);
// ResultSet rs = pstm.executeQuery();
// while(rs.next()){
// System.out.println(rs.getString(1));
// }
CallableStatement cs = conn.prepareCall("{call test_procedure(?,?)}");//調用存儲過程
cs.setInt(1, 11694);
cs.registerOutParameter(2, OracleTypes.VARCHAR);
cs.execute();
System.out.println(cs.getString(2));
closeConn(conn);
}
public static Connection getConn(){
Connection conn = null;
String name = "lims_data";
String pwd = "lims";
String url = "jdbc:oracle:thin:@10.80.36.91:1521/orcl";
String driver = "oracle.jdbc.driver.OracleDriver";
try{
Class.forName(driver);
conn = DriverManager.getConnection(url,name,pwd);
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
public static void closeConn(Connection conn) throws SQLException{
if(conn!=null){
conn.close();
}
}
}