문제

다음 오류가 발생합니다 : Aesymresolvestatement [775] ... 문 (108,512)의 위치 34338 또는 근처의 Meta-SQL 오류. SQL 문 자체는 40,000 숯이 넘는 길이이므로 문제가 있습니다.

DB는 Oracle입니다. 도구에서 실행 8.49.24.

도움이 되었습니까?

해결책

그러한 한도는 없습니다.

다음과 같은 SQL을 만들어 직접 확인할 수 있습니다.

select 'x' from PS_INSTALLATION where 
      1 = 1 and 
      1 = 1 and
      1 = 1 and
      1 = 1 and
      /* ... copy paste '1 = 1 and' 90000 times or so times more */
      1 = 1

Pside를 상당히 느리게 만들지 만 저장하고 잘 검증합니다.

다른 팁

애플리케이션 엔진 (SQL 단계)에 사용 된 SQL의 크기에 제한이 있다는 것을 알고 있습니다. 애플리케이션 엔진에서 매우 긴 SQL을 사용하려고하면서 비슷한 오류를 한 번 받았습니다.

같은 한계가 SQL 객체에 적용되면 놀라지 않을 것입니다.

문제를 해결하기 위해 SQL을 2로 나눌 수있었습니다 (업데이트 문). 당신의 경우에도 가능하기를 바랍니다.

PeopleCode에는 주로 문자열 길이의 한계로 인해 한계가 있지만 저장된 SQL 문에 제한이 없었습니다.

개인적으로 나는 진술을 어떤 식 으로든 조각으로 나누는 것을보고 있습니다.

당신은 할 수 있습니다 :

  • 앱 엔진의 내장 루핑 메커니즘을 사용합니다
  • SQL과 PeopleCode의 혼합물을 사용하십시오
  • 임시 테이블을 사용하고 임시 테이블에 저장하여 중간 SQL을 수행하십시오.

데이터베이스에 심장 발작을 제공하는 것 외에도 SQL 모니터에서 진술을 볼 때 DBA는 언급하지 않습니다. 당신이 진술을 다시보아야한다면 당신은 자신을 고통의 세계를 구하고 있습니다.

앱 엔진의 SQL은 오랫동안 저장되어 있다고 생각하므로 Oracle에서는 4GB 일 것입니다. DB2에서는 비슷합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top