나는 매우 자동화되어야하는 오라클 프로 시저에서 작업 중이므로 동적 SQL을 사용하고 있습니다. 동적 SQL을 처음 사용했습니다.오라클 동적 SQL으로 고생
실행해야하는 SQL을 빌드하는 데 varchar2 변수를 사용하고 있습니다. 나는 생성되고있는 SQL을 캡처하는 DBMS_OUTPUT을 사용했습니다, 그리고 그것을 잘 실행 :
SQL은 INBOUND.BASKET_FCT 파티션에서 표 INBOUND.BASKET_CTAS_SWP COMPRESS를 쿼리 HIGH AS SELECT *를 만들 = (SYS_1234)를 바구니 스왑 테이블을 만들려면 ; 내가 이것을 사용하여 프로 시저를 실행할 때
그러나, 그것은
Execute MyProcedure;
아래의 오류가 어떤지도 주셔서 감사 생성!
오라클 버전 : 오라클 데이터베이스 11g 엔터프라이즈 에디션 출시 11.2.0.3.0 - 64 비트 생산
IDE : 오라클 SQL 개발자 버전 4.0.2.15 빌드 15.21
코드 :
note: all variables set at beginning of procedure...
Sqlexec:= 'CREATE TABLE ' || Basket_Swap_Schema || '.' || Basket_Swap_Table_Name || ' ';
Sqlexec:= Sqlexec || 'COMPRESS FOR QUERY HIGH ';
Sqlexec:= Sqlexec || 'AS SELECT * FROM ' || Basket_Source_Schema_Name || '.' || Basket_Source_Table_Name || ' ';
Sqlexec:= Sqlexec || 'PARTITION ('||Basket_Partition_To_Process||'); ';
Dbms_Output.Put_Line('sql to create Basket Swap table = ' || Sqlexec);
Execute Immediate Sqlexec;
오류 메시지 :
오류가 발생하는 줄 : 명령에서 1 - Process_Wic_Snap_Partition에게 오류 보고서를 실행 - ORA-00911을 : 잘못된 문자 ORA-06512 : "를 MY_SCHEMA.MY_PROCEDURE"에서, 라인 (102) ORA-06512 : 줄에 1 00911. 00000 - "잘못된 문자" * 원인 : 식별자 문자 및 숫자 이외의 ASCII 문자로 시작할 수 없습니다. 첫 번째 문자 뒤에 $ # _도 사용할 수 있습니다. 이중 인용 부호로 묶인 식별자는 이중 인용 부호 이외의 문자이면 을 포함 할 수 있습니다. 대체 인용 부호 (q '# ... #')은 공백, 탭 또는 캐리지 리턴을 구분 기호로 사용할 수 없습니다. 다른 모든 문맥에 대해서는 SQL 언어 Reference Manual을 참조하십시오.
놀랍습니다. 정말 고마워 – Steve