programing

지원되지 않는 SQL92 오류를 수정하려면 어떻게 해야 합니까?

minimums 2023. 9. 15. 20:52
반응형

지원되지 않는 SQL92 오류를 수정하려면 어떻게 해야 합니까?

자바로 코드를 작성하고 오라클과 데이터베이스 연결을 합니다.스크립트를 실행하면 이 오류가 발생합니다.스크립트는 두꺼비에서는 작동하지만 프로젝트에서는 작동하지 않습니다.

url include.

.
.
.
.
    DECODE
                 (REF.target_type_code,
                  '1', wf.workflow_name,
                  '20', reqtyp.request_type_name,
                  '6', prj1.project_name,
                  '59', trootinfo1.NAME,
                  '55', DECODE
                     (document.checked_out_by,
                      NULL, 
                      REPLACE
                         (REPLACE
                             (REPLACE
                                 (REPLACE
                                     (REPLACE
                                         (knta_i18n_resource.get
                                             ('DMS_REFERENCE_DETAIL_CHECKED_OUT.TXT'
                                             ),
                                          knta_i18n_format_utils.format_date
                                                        (document.checked_in_date,
                                                         3 
                                                        )
                                         )
                                     ),
                                  document.version_number
                                 ) 
                             ),
                          '{4}' 
                         )
                     )
                 ) reference_detail,

.
.
.

.

try { 
    stmt = connection.createStatement(); 
    rset =   stmt.executeQuery(url) ;  
}  catch (Exception e) 

{  
    error= e.getLocalizedMessage() ;
    return 4; 
}

이 오류는 {}개의 괄호 때문에 발생합니다.시험해봅니다.괄호를 삭제하면 오류가 없습니다.하지만 저는 그것들이 필요하고 어떻게 고칠 수 있을까요?

모든 것이 다.{그리고.}. 사용하지 않습니다.Ojdbc는 파싱을 하지 않습니다.토큰 대신 다른 토큰을 사용합니다.

이것은 아마도 JDBC 이스케이프 구문 때문일 것입니다(JDBC 4.1 규격의 섹션 13.4 참조).JDBC 드라이버는 다음과 같이 탈출을 처리해야 합니다.{그리고.}이스케이프된 표준 함수, 외부 조인 등을 데이터베이스 특정 형식으로 변환합니다.

내가 알기로는 운전자는 이스케이프가 문 본문 자체에서 발생한 경우에만 구문을 해석해야 하며 문의 텍스트 내부에 있을 때는 구문을 해석해서는 안 되는 것으로 알고 있습니다(예에서와 같이).그래서 제가 보기에 이것은 당신 운전자의 JDBC 탈출 처리에 버그로 보입니다.

다른 StackOverflow 게시글의 답을 따라 JDBC로 Oracle 데이터베이스에 Java 만들기를 수행하면 이 문제를 해결할 수 있습니다.

요약하면 다음과 같습니다.

CallableStatement stat = conn.prepareCall(sql);
stat.setEscapeProcessing(false);
stat.execute();

중간선은 당신이 놓치고 있는 것 같습니다.그 게시물을 찾을 때까지 알 수가 없었습니다.

REFREENT 호출 중 일부에 인수가 충분하지 않은 것으로 보입니다.왼쪽에서 세어 보면 첫 번째 REFREENT에는 두 가지 인수가 있습니다.두번째는 오직 한가지 논쟁만 있습니다.세 번째는 두 가지 주장이 있습니다.네 번째는 논쟁이 하나뿐입니다.다섯 번째 (마지막)에는 두 가지 주장이 있습니다.Oracle에서 REFREENT 함수에는 최소 두 개의 인수가 필요합니다.당신이 완전한 글을 올리지 않아 이것이 오류의 원인인지는 알 수 없지만, 저는 분명 대체할 적절한 주장이 부족한 것이 문제가 될 것이라고 예상합니다.

나누어서 즐겨요.

교체하다'{4}'와 함께CHR(123)||'4'||CHR(125)당신의 대본에.

언급URL : https://stackoverflow.com/questions/12244591/how-can-i-fix-this-error-non-supported-sql92

반응형