다음을 통해 공유


입력 매개 변수가 있는 저장 프로시저 사용

JDBC 드라이버 다운로드

호출할 수 있는 SQL Server 저장 프로시저는 데이터를 저장 프로시저에 전달하는 데 사용할 수 있는 IN 매개 변수가 하나 이상인 저장 프로시저입니다. SQL Server용 Microsoft JDBC 드라이버는 이러한 종류의 저장 프로시저를 호출하여 반환되는 데이터를 처리하는 데 사용할 수 있는 SQLServerPreparedStatement 클래스를 제공합니다.

JDBC 드라이버를 사용하여 IN 매개 변수가 포함된 저장 프로시저를 호출하는 경우에는call SQL 이스케이프 시퀀스와 SQLServerConnection 클래스의 prepareCall 메서드를 함께 사용해야 합니다. 입력 매개 변수가 있는 call 이스케이프 시퀀스의 구문은 다음과 같습니다.

{call procedure-name[([parameter][,[parameter]]...)]}

참고 항목

SQL 이스케이프 시퀀스에 대한 자세한 내용은 SQL 이스케이프 시퀀스 사용을 참조하세요.

call 이스케이프 시퀀스를 구성할 때 IN 매개 변수를 지정하려면 ? (물음표) 문자를 사용합니다. 이 문자는 저장 프로시저에 전달될 매개 변수 값의 자리 표시자로 기능합니다. 매개 변수의 값을 지정하려면 SQLServerPreparedStatement 클래스의 setter 메서드 중 하나를 사용할 수 있습니다. 사용할 수 있는 setter 메서드는 입력 매개 변수의 데이터 형식에 따라 결정됩니다.

setter 메서드에 값을 전달하는 경우 매개 변수에 사용될 실제 값뿐만 아니라 저장 프로시저에서의 매개 변수 서수 배치도 지정해야 합니다. 예를 들어 저장 프로시저에 단일 IN 매개 변수가 포함된 경우 해당 서수 값은 1이 됩니다. 저장 프로시저에 두 개의 매개 변수가 포함된 경우 첫 번째 서수 값은 1이고 두 번째 서수 값은 2가 됩니다.

입력 매개 변수가 있는 저장 프로시저를 호출하는 방법의 예로 AdventureWorks2022 샘플 데이터베이스에 uspGetEmployeeManagers 저장 프로시저를 사용합니다. 이 저장 프로시저는 정수인 EmployeeID라는 단일 입력 매개 변수를 허용하고 지정한 EmployeeID를 토대로 직원 및 해당 관리자의 재귀 목록을 반환합니다. 이 저장 프로시저를 호출하기 위한 Java 코드는 다음과 같습니다.

public static void executeSprocInParams(Connection con) throws SQLException {  
    try(PreparedStatement pstmt = con.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}"); ) {  

        pstmt.setInt(1, 50);  
        ResultSet rs = pstmt.executeQuery();  

        while (rs.next()) {  
            System.out.println("EMPLOYEE:");  
            System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));  
            System.out.println("MANAGER:");  
            System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));  
            System.out.println();  
        }  
    }
}

참고 항목

저장 프로시저가 있는 문 사용