ORA-01036: 잘못된 변수명/번호 해결하기 (ORA-01036: illegal variable name/number)

ORA-01036: 잘못된 변수명/번호 오류는 영문으로 ORA-01036: illegal variable name/number와 같이 발생합니다. 해당 오류는 설명 그대로 잘못된 변수명 및 변수 번호를 설정하여 발생합니다. 

다음과 같이 해당 오류를 해결하는 방법에 대해 몇 가지 경우를 요약해 보았습니다.

  • 변수명 철자 등을 정확히, 제대로 입력하였는지 다시 확인
  • 변수명 정리가 되어 있지 않아서 기존 값이 남아있지 않은지 확인

파라미터 바인딩 확인하기

첫 번째로 확인해 볼만한 곳은 파라미터 바인딩 부분입니다. 혹시 쿼리에서는 ':PARAMETER' 로 변수를 설정을 하고, 바인딩 부분에서는 ':PARAM' 과 같이 다른 변수명을 지정한 것이 있는지 찾아봅시다. 

그것이 아니면 변수명/번호 바인딩 부분을 완전히 누락하였을 가능성도 생각할 수 있습니다. 

파라미터 클리어가 제대로 되어 있지 않은지 확인해 주세요.

변수명 확인하기

ORA-01036: 잘못된 변수명/번호 해결하기

변수명(파라미터 네임)은 :(colon, 콜론) 또는 &(ampersand, 앰퍼샌드)로 설정하여야 합니다. 그외의 특수문자를 사용하거나 잘못된 변수명을 입력하면 상기와 같은 오류를 볼 수 있습니다. 예제 자료는 커맨드 텍스트와 다음과 같을 때 어떠한 변수명이 올 수 있는지에 대한 안내입니다.

//파라미터 네임은 :param으로 가정합니다.

CommandText = "INSERT INTO table_name (column_name) VALUES (:param)";

올바른 변수명

콜론, 앰퍼샌드 등으로 파라미터를 설정합니다.

//올바른 변수명 설정
((OracleParameterCollection)cmd.Parameters).AddWithValue(":param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("&param", "value");

잘못된 변수명

기타 특수문자 또는 잘못된 변수명 입력 시 ORA-01036: illegal variable name/number 예외가 발생합니다.
1번 예제 : 바인딩 특수 문자 이외의 변수명을 설정하여 예외가 발생합니다.
2번 예제 : 바인드 변수 오타로 예외가 발생합니다. AddWithValue를 "param"으로 해야 하는데 오타로 "p"를 적었습니다.

//ORA-01036: 잘못된 변수명/번호 => 바인딩 특수문자 이외 변수명
((OracleParameterCollection)cmd.Parameters).AddWithValue("!param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("@param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("#param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("$param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("%param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("^param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("*param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("(param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue(")param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("-param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("_param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("=param", "value");
((OracleParameterCollection)cmd.Parameters).AddWithValue("+param", "value");

//ORA-01036: 잘못된 변수명/번호 => param이 아닌 전혀 다른 네임 p로 설정하여도 잘못된 변수명.
((OracleParameterCollection)cmd.Parameters).AddWithValue("p", "value");

댓글