ORA-01036: illegal variable name/number

이 오류는 일반적으로 바인드 변수 또는 플레이스홀더에 잘못된 이름 또는 번호가 사용되었을 때 발생한다.

 

오류의 원인

  1. 바인드 변수 또는 플레이스홀더의 이름이나 번호가 올바르게 지정되지 않은 경우 발생할 수 있습니다.
    바인드 변수는 쿼리에서 재사용 가능한 매개변수로 사용되는 특별한 토큰이며,
    올바른 구문을 사용하여 지정되어야 합니다.

  2. SQL 문장에서 바인드 변수를 사용하지만 해당 변수가 먼저 선언되지 않은 경우에도 이 오류가 발생할 수 있습니다.
    변수는 사용되기 전에 선언되어야 합니다.

  3. 프로그래밍 언어 또는 데이터베이스 클라이언트에서 바인드 변수를 처리하는 방식이 잘못된 경우에도
    발생할 수 있습니다. 예를 들어, 올바른 바인드 변수 구문을 사용하지 않거나 바인드 변수를 올바른 값으로
    바인딩하지 않은 경우에도 이 오류가 발생할 수 있습니다.

 

해결 방법

  1. SQL 문장에서 사용하는 모든 바인드 변수 또는 플레이스홀더의 이름과 번호가 올바르게 지정되었는지 확인하십시오.

  2. 바인드 변수를 사용하기 전에 변수를 먼저 선언했는지 확인하십시오.

  3. 프로그래밍 언어 또는 데이터베이스 클라이언트의 문법과 바인드 변수 처리 방식을 검토하고,
    정확한 구문을 사용하고 변수에 올바른 값을 바인딩했는지 확인하십시오.

 

보통 에러의 사유는 sql문 자체를 잘못 작성했거나, 변수명 앞에 : 표시를 해야하는 형태를 어긴 경우라 한다.(ex. :value)

하지만 내 경우에는 바인드변수 처리된 값이 존재하지않아 계속 저 에러를 만났다.

 

나와 같은 경우는 실제 바인드변수에 값이 지정되어있는지 log를 띄워 확인해야한다.

입력된 값은 제대로 받아지고 있으나, 혹 null 값이 들어오는 경우에는 null 값의 대체를 지정하여

sql문과 바인드변수 값이 제대로 지정될 수 있도록 해야할 필요도 있다.

 

'Backend > Oracle' 카테고리의 다른 글

Oracle MERGE INTO 문 활용 실무식 예제  (0) 2026.04.04