欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle存储过程学习

程序员文章站 2022-04-12 19:49:11
什么是存储过程: 存储过程是一组为了完成特定功能的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();
}

}
}