ORA-00933: sql 명령어가 올바르게 종료되지 않았습니다 (ORA-00933: SQL command not properly ended)

ORA-00933: SQL command not properly ended 오류는 SQL 명령어 마지막에 특수문자를  입력하는 경우에 발생할 수 있습니다. 이를 해결하기 위해서는 SQL 명령어를 추출하여 테스트로 명령어를 실행해 보고 문제가 되는 부분을 확인해 주세요.

ORA-00933: sql 명령어가 올바르게 종료되지 않았습니다 해결하기

특히 세미콜론(;)으로 명령어를 종료하는 경우, DBMS 툴에서는 결과가 정상적으로 실행이 되지만, 응용 프로그램에서 실행 시 오류가 발생합니다. 또한 string이나 StringBuilder 클래스의 Append 메서드 등을 사용하는 경우에 예상치 않게 띄어쓰기가 제대로 적용이 되지 않아서 발생하는 경우도 있으니 해당 부분을 점검해 주세요.

다음은 특수문자 배열로 각 문자가 ORA-00933 SQL 명령어가 올바르게 종료되지 않았습니다(ORA-00911 문자가 부적합합니다) 오류가 어떻게 발생하는지 보여드리는 예제 자료입니다.

void BeomSang()
{
    string[] specialSymbols = { "!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
                                "-", "_", "=", "+", "[", "{", "]", "}", "\\", "|",
                                ";", ":", "'", "\"", ",", "<", ".", ">", "/", "?",
                                "`", "~", ""};
    int i = 0;
    using (IDbConnection con = new OracleConnection("User Id=USER_NAME;Password=PASSWORD;Data Source=DATA_SOURCE_NAME"))
    {
        con.Open();
        using (IDbCommand cmd = con.CreateCommand())
        {
            using (IDbTransaction tx = con.BeginTransaction())
            {
                foreach (string s in specialSymbols)
                {
                    try
                    {
                        cmd.Transaction = (OracleTransaction)tx;
                        cmd.CommandText = $"INSERT INTO table_name (column_name) VALUES (:param) {s}";
                        cmd.Parameters.Clear();
                        ((OracleParameterCollection)cmd.Parameters).AddWithValue(":param", "0");
                        i = cmd.ExecuteNonQuery();
                        cmd.Transaction.Rollback();
                        Debug.WriteLine($"{s} : OK");
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"{s} : {ex.Message}");
                    }
                }
            }
        }
    }
}

예제소스는 다음과 같이 출력이 됩니다. 세미콜론과 같은 특수 문자를 조심해 주세요.

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
! : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
@ : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
# : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
$ : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
% : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
^ : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
& : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
* : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
( : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
) : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
- : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
_ : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
= : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
+ : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
[ : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
{ : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
] : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
} : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
\ : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
| : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
; : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
: : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
' : ORA-01756: quoted string not properly terminated

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
" : ORA-00972: identifier is too long

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
, : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
< : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
. : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
> : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
/ : ORA-00933: SQL command not properly ended

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
? : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
` : ORA-00911: invalid character

예외 발생: 'System.Data.OracleClient.OracleException'(System.Data.OracleClient.dll)
~ : ORA-00911: invalid character

 : OK
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗