오라클 PL/SQL에서, 나는이 코딩을 가지고, 그것은 complier 오류를 제공합니다. 왜 모든 걸 가지고있는 것 같아, 모르겠다. ...Oracle PL/SQL이 구문 오류를 찾는 방법은 무엇입니까?
도와주세요.
감사
ORA-06550: line 6, column 5:
PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:
(begin case declare end exit for goto if loop mod null
pragma raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
코드
begin
for c in (select id from tmp_A)
loop
dbms_output.put_line(c.id);
create table tmp_c as
select B.name from tmp_B B where B.id = c.id;
drop table tmp_c;
end loop;
end;
/
왜 런타임에 테이블을 생성 하시겠습니까? 오라클에서는 이것이 필요하고 사람들이 이와 같은 코드를 작성하는 대다수의 경우에는 매우 드뭅니다. 이는 오류입니다. –
복잡한 상관 관계가있는 하위 쿼리가 있으므로 이해하기 쉬운 작은 조각으로 나누고 싶습니다. – user595234
런타임시 테이블을 만드는 것이 현명한 이유는 아닌 것 같습니다. 동적 SQL을 사용한다고해서 코드를 더 쉽게 이해할 수는 없습니다. 여러 세션이 동일한 코드를 성공적으로 호출하는 것을 방지합니다 (동적으로 생성 한 테이블은 모든 세션에 즉시 표시됨). 잠재적으로 프로 시저 외부에 하나의 전역 임시 테이블을 만든 다음 코드에서 해당 임시 테이블에 삽입하려고하지만이 경우에도 매우 드뭅니다. 코드를 이해하기 쉽게 분할하려면 모듈 형 함수 및 절차를 사용하십시오. –