실행 즉시 및 오류 처리와 관련된 여러 문제에 대해 약 2 시간 동안 연구 한 결과, 현재 제시 할 문제가 정확히 발생하지는 않았다고 생각합니다. 문제점을 아래 샘플로 줄였습니다. 문제는 다음과 같습니다.즉시 모드 및 오류가있는 Oracle DDL 실행
직접 작성 모드에서 변수 작성 텍스트와 구문 작성 오류로 작성하는 프로 시저를 실행할 때 즉시 실행 호출은 실패했음을 나타내는 오류를 발생시킵니다. 그러나 근본적인 오류나 그 본문에서 벗어날 수는 없습니다.
그러나 sqlplus (중간 모드 제외)에서 직접 동일한 proc을 만들면 오류가 완벽하게 발생합니다.
따라서 직접 모드가 실패하는 오류를 어떻게 만듭니 까?
나는 나의 의견 (MOP)으로 출력을 산재하고 공 i 행의 수 감소 :
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 25 15:57:06 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set serveroutput on
SQL> declare
2 eSQL varchar(568);
3 begin
4 eSQL := 'create or replace procedure MOPMOP
5 as
6 begin
7 select 1 from dual;
8 end;
9 ';
10 execute immediate eSQL;
11 end;
12/
ERROR:
ORA-24344: success with compilation error
ORA-06512: at line 10
Warning: PL/SQL compilation errors.
이 좋은입니다. 컴파일 오류가 있습니다. 이제 컴파일 오류가 무엇인지 묻습니다.
SQL> show errors;
No errors.
이것은 좋지 않습니다. 컴파일 오류가 있습니다. 뭐야!?!?!? 그와 대비 :
SQL> create or replace procedure MOPMOP
2 as
3 begin
4 select 1 from dual;
5 end;
6/
Warning: Procedure created with compilation errors.
좋은 결과입니다. 컴파일 오류가 있습니다. 이제 컴파일 오류가 무엇인지 묻습니다.
SQL> show errors;
Errors for PROCEDURE MOPMOP:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/5 PLS-00428: an INTO clause is expected in this SELECT statement
SQL>
그리고 좋습니다. 컴파일 오류가 있습니다. 이제 나는 무엇이 있는지 압니다.
그래서 중간 모드에서 기본 (00428) 오류가 발생하지 않도록하려면 어떻게해야합니까?
나는 그의 코드는 단지의 필요성을 설명하고 우리가 문제를 재현 할 수 있습니다 생각합니다. –
물론 ... 그가 쇼 오류에 대해 알았 으면 좋겠다. – Art
예, 이것은 단지 재현 일뿐입니다. – mpersico