2009-11-05 1 views
1

EXECUTE IMMEDIATE을 사용하여 쿼리를 실행하는 PL/SQL 문이 있습니다. 그러나, 나는 실행중인 쿼리의 텍스트를 얻는 방법조차 알아 내는데 어려움을 겪고있다. 쿼리가 255자를 초과하므로 dbms_output을 사용할 수 없습니다. sqlplus가 EXECUTE IMMEDIATE으로 전달 된 문자열을 에코하게 만들 수있는 방법이 있습니까?sqlplus에서 Oracle 동적 SQL을 어떻게 디버깅합니까?

답변

3

사용중인 Oracle 버전은 무엇입니까? 255는 DBMS_OUTPUT.PUT_LINE().의 기본 줄 길이입니다. 10g 이전에는 한 번의 호출로 1048자를 표시 할 수있었습니다. 그 이후로 32K입니다.

또는 DBMS_DEBUG를 지원하는 IDE를 사용해야합니다. 예를 들어, SQL Developer는 그렇게하며 오라클은 무료입니다. Find out more.

+1

흠 ... 나는 오래된 정보를보고있을 수도 있습니다. 나는 그것이 내가 생각한 곳에서 아무 것도 처형되지 않았다는 것을 의미한다고 생각합니다. : - / –

0

프로파일 러에 DB에 대한 쿼리를 표시하므로 프로 시저를 데이터베이스에 첨부 할 수 있습니다 (솔직히 SqlServer에 대해서만 수행했습니다). 프로 시저를 실행하면 프로 시저를 실행하여 수행 할 수 있습니다. 필요한 디버깅. 희망이 있습니다.

0

한 번에 큰 문자열 N 문자를 인쇄하는 방법. 필요에 맞게 수정하십시오.

FOR i IN 0..10 LOOP 
    dbms_output.put_line(substr(my_very_long_string,i*100+1,100)); 
END LOOP; 
0

로깅/임시 테이블에 문자열을 삽입하고 검사 할 수 있습니다.