sql >> データベース >  >> RDS >> Oracle

ORA-00933:SQLコマンドが正しく終了していません

    .netで、末尾にセミコロンが付いた単一のOracleSQLステートメントを実行しようとすると。結果は、Oracleエラーになります:ora-00911:無効な文字。 OK、1つのSQLステートメントにセミコロンは必要ないことがわかりますが、たとえば、1つの文字列で2つのSQLステートメントを実行する場合はどうでしょうか。

    Dim db As Database = DatabaseFactory.CreateDatabase("db")
    Dim cmd As System.Data.Common.DbCommand
    Dim sql As String = ""
    
    sql = "DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; "
    
    cmd = db.GetSqlStringCommand(sql)
    db.ExecuteNonQuery(cmd)
    

    上記のコードでは、同じOracleエラーが発生します:ora-00911:無効な文字。

    この問題の解決策は、2つのOracleSQLステートメントをBEGINでラップすることです。 およびEND; 構文例:

    sql = "BEGIN DELETE FROM iphone_applications WHERE appid = 1; DELETE FROM iphone_applications WHERE appid = 2; END;"
    

    礼儀:http://www.lazyasscoder.com/Article.aspx?id =89&title =ora-00911%3A + invalid + character + when + execute + multiple + Oracle + SQL + statement



    1. Oracleに複数の行を挿入する4つの方法

    2. OracleのSIGN()関数

    3. LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?

    4. プロファイルを使用してOracleのパスワードとリソースを管理する