DATA/데이터베이스 / / 2024. 6. 21. 09:15

SQLException invalid column index(프로시저 실행시)

반응형

JDBC-90609: Invalid column index 에러는 일반적으로 JDBC에서 SQL 질의를 실행할 때 지정된 열 인덱스가 잘못되었을 때 발생합니다. 이 오류는 주로 ResultSet, PreparedStatement, 또는 CallableStatement 객체에서 발생할 수 있습니다. 프로시저 실행 중에 이 오류가 발생하면, JDBC 코드에서 열 인덱스가 잘못 지정된 것입니다.

 

 

예시와 해결 방법

문제 예시

예를 들어, 다음과 같은 JDBC 코드가 있다고 가정해보겠습니다:

위 코드에서 registerOutParameter 메서드와 getString 메서드에 사용된 인덱스 3이 잘못되었습니다. 프로시저에 두 개의 파라미터만 있기 때문에 유효한 인덱스는 1과 2입니다.

해결 방법

인덱스가 잘못된 부분을 올바르게 수정해야 합니다. 다음과 같이 코드를 수정해보겠습니다:

 

이제 올바른 열 인덱스를 사용하여 오류를 해결했습니다.

구체적인 예시: 프로시저 실행

 

다음은 올바르게 작성된 JDBC 코드를 포함한 예시입니다.

데이터베이스 프로시저 예시

 

JDBC 코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.sql.*;
 
public class JDBCExample {
    public static void main(String[] args) {
        String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:xe";
        String username = "myusername";
        String password = "mypassword";
        
        try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
            // 프로시저 호출 준비
            CallableStatement stmt = connection.prepareCall("{call MY_PROCEDURE(?, ?)}");
            stmt.setString(1"World");  // 입력 파라미터 설정
            stmt.registerOutParameter(2, Types.VARCHAR);  // 출력 파라미터 설정
 
            // 프로시저 실행
            stmt.execute();
 
            // 결과 가져오기
            String result = stmt.getString(2);
            System.out.println("Result: " + result);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
cs

위 코드는 다음과 같은 작업을 수행합니다:

  1. 데이터베이스에 연결합니다.
  2. MY_PROCEDURE 프로시저를 호출합니다. 입력 파라미터와 출력 파라미터를 설정합니다.
  3. 프로시저를 실행하고 결과를 가져와서 출력합니다.

이렇게 올바른 열 인덱스를 사용하여 프로시저를 호출하고 결과를 처리할 수 있습니다. Invalid column index 오류를 방지하려면 항상 열 인덱스가 올바르게 지정되었는지 확인해야 합니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유