调用Oracle存储过程

1.单个传入传出参数
create or replace procedure procedure_in_name_out_email(
        i_name  in o_user.username%type,
        o_email out o_user.email%type) is
        
  cursor getEmail(na varchar2) is
    select email from o_user where o_user.username = na;
    
begin
  open getEmail(i_name);
  fetch getEmail
    into o_email;
  dbms_output.put_line(o_email);
  close getEmail;
end procedure_in_name_out_email;

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


public class CallableOracle {

	public static void main(String[] args){
		
		try{
			
			Class.forName("oracle.jdbc.OracleDriver");
			
			String url="jdbc:oracle:thin:@127.0.0.1:1521:king11g";
			
			String name="programmer";String pass="password";
			
			Connection conn=DriverManager.getConnection(url,name,pass);
			
			Statement stmt=conn.createStatement();
			
			CallableStatement proc = conn.prepareCall
			
			("{ call procedure_in_name_out_email(?,?)}");
			
			proc.setString(1, "username9");
			
			proc.registerOutParameter(2, java.sql.Types.VARCHAR);
			
			proc.execute();
			
			String str=proc.getString(2);
			
			System.out.println(str);

			if(stmt!=null){stmt.close();}
			
			if(conn!=null){conn.close();}

		}catch(SQLException se){
			
			se.printStackTrace();
		}
		catch(ClassNotFoundException ce){
		
			ce.printStackTrace();
		}
	}
}

猜你喜欢

转载自xiongjiajia.iteye.com/blog/1289236