2012-04-02 4 views
2

IBM DB2 유형 4 드라이버 (db2jcc4.jar)를 사용하여 Java 웹 응용 프로그램에서 DB2 데이터베이스 (DB2 v9.7.400.501)에 연결하고 있습니다. 나는이 같은 SQL 문을 실행하려고하면 DB2의 SQL - UPPER 함수가 작동하지 않습니다.

SELECT * FROM USERS WHERE UPPER(USERNAME) = UPPER('testuser'); 

나는 다음과 같은 예외를 얻을 : 일반 select 문이 정상적으로 실행 이후

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;= UPPER('testuser');END-OF-STATEMENT, DRIVER=4.12.55

문제는 UPPER 함수에서입니다. '='입니다과

SELECT * FROM USERS WHERE UPPER(USERNAME) LIKE UPPER('testuser'); 

에 코드를 SQLite는 대한 확인을 보이지만 anbout DB2를 모르는 :

+0

"END OF OF STATEMENT"는 처음 실행되는 작은 따옴표를 문자열의 끝으로 해석하고 있다고 가정합니다. 작은 따옴표를 두 개의 작은 따옴표로 바꾸어서 테스트 할 수 있습니다. – Bridge

+0

@Bridge 이제 다른 예외가 발생합니다. com.ibm.db2.jcc.am.SqlSyntaxErrorException : DB2 SQL 오류 : SQLCODE = -104, SQLSTATE = 42601, SQLERRMC = testuser, ER (LOGIN) = UPPER (''; CONCAT, DRIVER = 4.12.55' – user1135357

+0

내 추측이 잘못된 것처럼 보입니다 – Bridge

답변

2

어쩌면 당신은 사용해야하는이 방법입니다.

UPD. 몇 가지 조사가 끝나면 오류는 ';'을 사용하여 하나의 쿼리에서 여러 명령문을 실행하려고하는 Java 코드에 의해 발생한다고 말할 수 있습니다. 구분 기호로 사용합니다. 여러 문장에 대해 PreparedStatement, addBatch() 및 executeBatch()를 사용해보십시오.

UPD2. 이것은 DB2 관련 문제입니다. PostgreSQL, afaik는 단일 쿼리에서 다중 명령문을 허용합니다.

+0

아니요, 별다른 차이가 없습니다. 'com.ibm.db2.jcc.am.SqlSyntaxErrorException : DB2 SQL 오류 : SQLCODE = -104, SQLSTATE = 42601, SQLERRMC = ;; KE UPPER ('testuser'); END OF STATEMENT , 운전자 = 4.12.55' – user1135357

관련 문제