2011-02-02 8 views
0

DBConnect의 GetRecordSet() 메서드에 전달되는 거대한 (11902 자) ad-hoc SQL 문을 생성하는 오래된 VB6 응용 프로그램에서 불행하게도 작업하고 있습니다. 응용 프로그램은 OraOLEDB.Oracle 공급자를 사용하고 있습니다.()없는 오른쪽 괄호OraOLEDB.Oracle GetRecordSet()에서 "ORA-00907 : right parenthesis missing"오류가 발생하는 이유는 무엇입니까?

지금 나는 GetRecordSet에 전달 된 문자열의 내용을 잡고있다 :

ORA-00907 다음 GetRecordSet() 메소드가 실행되면, 그러나, 나는 다음과 같은 오류가 발생합니다 기능을 철저히 조사하고 누락 된 괄호가 없다. 또한 Oracle SQL Developer뿐만 아니라 SQL * Plus에서도 select 문을 실행할 수 있습니다. 그래서 문자열이 구문 적으로 정확하다고 확신합니다.

나는 공급자에서 뭔가 생선이 일어나고 있다고 생각하기 시작했습니다. 아마도 문자열이 너무 길어서 어딘가에서 잘 렸을 것입니다.

나를 도와 줄 수있는 사람이 있습니까?

감사합니다, 스티브

답변

1

확인 Oracle 추적 파일. 먼저 세션을 추적 모드로 설정하십시오. 세션 세트 변경 sql_trace = true;

동일한 세션에서 쿼리를 실행하십시오. user_dump_dest가 가리키는 디렉토리의 데이터베이스 서버에서 추적 파일을 찾을 수 있습니다.

쿼리가 완전히 추적 파일에 있으면 데이터베이스에서 완전히 수신했습니다.

+0

답변 해 주셔서 감사합니다. 나는 오라클에 관해서는 완전한 초보자이다. 정확하게, "추적 모드에서 내 세션 설정"으로 이동해야합니까? 이것이 SQL * Plus에서 할 것이라고 가정합니다. 그러나 SQL * Plus에서이 작업을 수행하면 내 VB6 응용 프로그램에서 실행되는 것과 다른 세션이되지 않습니까? 쿼리는 SQL * Plus에서 정상적으로 실행되는 것 같습니다. 문제는 내 응용 프로그램 내에서 GetRecordSet() 함수를 통해 쿼리를 실행하려고 할 때 발생하는 것 같습니다. –

+0

또한 절대 오라클 초보자, 내가 어디에서 "user_dump_dest"설정을 찾을 수 있습니까? 다시 한 번 감사드립니다. 도움을 청하십시오. –

+0

v $ 매개 변수에서 값 선택 where name = 'user_dump_dest'; 사용자는 v $ parameter에서 name, value를 선택하여 모든 인스턴스 매개 변수를 나열 할 수도 있습니다. –