Error code 모음/1. SQL errors

[Oracle Error] begin case declare end exception exit for goto if loop mod null pragma raise return select update while with

쟈누이 2023. 7. 14. 15:39
반응형

1. 원인


  • 프로시져 문에서 문법 오류가 발생했을 때 에러가 뜸

 

 

 

2. 해결 방법


  • 흔한 방법이지만, 에러문에 힌트가 있음... -> 이게 어렵지..인내심을 가지고 찾는다는 것이..
  • 나의 에러문은 아래와 같았음
begin case declare end exception 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 json_exists json_value json_query

   json_obj

-> 즉 문법에 문제가 있다는 것이다...

 

  • oracle 프로시져 문의 문법을 찾아 해맸음...
  • 그 결과 다른 쿼리를 실행시키려면... execute immediate 를 계속 붙여야 한다는 것을 알게됨
  • 적용 후 성공(쿼리는 아래와 같음..)
.option("sessionInitStatement","""BEGIN
                     execute immediate 'alter session set nls_timestamp_format="YYYY-MM-DD HH24:MI:SS.FF"';
                     execute immediate 'alter session set nls_date_format="YYYY-MM-DD"';
                     execute immediate 'ALTER SESSION SET NLS_LANGUAGE = "AMERICAN"';
                     execute immediate 'ALTER SESSION SET NLS_DATE_LANGUAGE = "AMERICAN"';
                     END;""")
  • 2시간 삽질 끝에 겨우 찾아냄......

 

 

 

3. 참고 링크


https://stackoverflow.com/questions/66260952/oracle-alter-table-using-execute-immediate-not-behaving-as-expected

 

Oracle Alter Table using Execute Immediate Not behaving as expected

I have PLSQL block like below which add a dummy column , does an update and then drops and renames columns BEGIN NULL; EXECUTE IMMEDIATE 'ALTER TABLE TESTMISMATCH ADD (TEMP_745634_1 VARCHAR2(4000 B...

stackoverflow.com

https://devdic.tistory.com/6

 

오라클의 동적 PL SQL 작성 - EXECUTE IMMEDIATE

PL SQL 작성 시 동적으로 DDL구문 또는 SELECT/INSERT/UPDATE/DELETE 구문을 수행해야 할 때가 있다. 이때 유용하게 사용하는 것이 EXECUTE IMMEDIATE 문법이다. SCOTT 계정의 테이블들의 건수를 TBL_CNT_LIST라는 테

devdic.tistory.com

https://dncjf0223.tistory.com/66

 

Oracle PL/SQL - 동적 SQL

동적 SQL 사용 방법 실행 중 변경 가능한 문자열 변수 또는 문자열 상수로 제공된 SQL문을 실행 사용 예 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM emp' INTO v_cnt; 사용 가능한 SQL 모든 SQL문(DML, TCL, DDL, DCL) 장점 -

dncjf0223.tistory.com

 

반응형