PreparedStatement 변수 바인딩 시에 에러가 발생합니다.
sql = "select test_name from test_table where no = :no";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"100");
rs = pstmt.executeQuery();
if(rs.next()) {
result = rs.getString(1);
}
이런 소스를 실행하면 아래와 같은 에러가 발생합니다.
cubrid.jdbc.driver.CUBRIDException: Semantic: Query yields no result, so variable 'no' is not set.
여기서 쿼리의 변수명을 "?"로 설정하면 잘 실행이 됩니다.
sql = "select test_name from test_table where no = ?";
이렇게하면 문제 없이 실행이 되거든요.
왜 변수 지정이 콜론 형식이면 안 되는지 궁금하네요.
안녕하세요. 질문 감사 드립니다.
CUBRID에서는 콜론을 사용한 바인딩을 아직 지원하고 있지 않습니다.
그러나 보편적으로 변수 바인딩 시에 “?” 기호를 사용하고 있으며, My-sql, Ms-sql 또한 동일합니다.