자바 에서 저장 프로 세 스 나 함수 호출

2893 단어 Java
1.호출 함수
     CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
     첫 번 째?되 돌아 오 는 값,뒤의 값?입력 매개 변수 일 수도 있 고 출력 매개 변수 일 수도 있 습 니 다.
     첫 번 째?매개 변 수 를 되 돌려 주 는 것 이기 때문에 문장 이 있어 야 합 니 다:
     connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar 는 형식 입 니 다)
     뒤의출력 매개 변수 라면 registerOutParameter 문 구 를 추가 해 야 합 니 다. 
     connection.registerOutParameter(2, Types.VARCHAR);(2 는 두 번 째 자리 차지 문자 이 고 Types.varchar 는 형식 입 니 다)     마지막 출력 결과 출력:
     System.out.println(cs.getString(1)); (1.대응 하 는 출력 매개 변수,첫 번 째 출력 매개 변수)
 
  2.저장 프로시저 호출
     CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(함수 와 의 차 이 는:없 음?=)     자바 프로그램 에서 호출 과정 에서 얻 은 값 을 인쇄 하려 면 출력 매개 변수 가 있 는 저장 과정 을 호출 해 야 합 니 다.사용 방법 은 호출 함수 와 같 습 니 다.
 
  3.간단 한 예
package com.dgy.app;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;


public class OraclePro {
	/**
	 *      
	 */
	public static Connection getConnection(){
		 Connection con = null;
		 try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@PC-200911181406:1521:dgy";
			String user = "dwj";
			String pwd = "dwj";			
			con = DriverManager.getConnection(url,user,pwd);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;
	}
	public static void main(String[] args) throws SQLException {
		 //System.out.println(OraclePro.getConnection());		
		Connection con=OraclePro.getConnection();
		CallableStatement cs=con.prepareCall("{?=call get_pname}");//       
		cs.registerOutParameter(1, Types.VARCHAR);//        ,   varchar
		cs.execute();                  //    execute()
		System.out.println(cs.getString(1)); //      ,  registerOutParameter
	}
}
 
// 1        		
CallableStatement cs=con.prepareCall("{?=call get_pname1(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2,25);	  //     25
cs.execute();

// 1        	
CallableStatement cs=con.prepareCall("{?=call get_pname2(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(2));
//        ,          

//1     ,1     		
CallableStatement cs=con.prepareCall("{?=call get_pname3(?,?)}");
// 1     , 2      , 3      		
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2, 25);	
cs.registerOutParameter(3, Types.VARCHAR);		
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(3));

 
   저장 프로 세 스 를 호출 하 는 것 은 함 수 를 호출 하 는 방법 과 마찬가지 로 con.prepareCall({call)일 뿐 입 니 다.  procedure(?,?)}")없다

좋은 웹페이지 즐겨찾기