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

ORA-00911:無効な文字

    OERRによると、 ORA-00911 :無効な文字

    原因 :識別子は、文字と数字以外のASCII文字で始めることはできません。 $#_は、最初の文字の後にも許可されます。二重引用符で囲まれた識別子には、二重引用符以外の任意の文字を含めることができます。代替引用符(q’#…#’)は、スペース、タブ、またはキャリッジリターンを区切り文字として使用できません。他のすべてのコンテキストについては、SQL言語リファレンスマニュアルを参照してください。
    アクション :なし

    ORA-00911 例外は非常に一般的であり、通常、一般的な構文ミスで発生します。一般的な原因と解決策のいくつかを以下に示します

    ORA-00911エラーを実行するためのチェックリスト

    1 。別のエディターからSQLをコピーすると、印刷できない/特殊文字が追加される場合があります(通常は引用符ではなくAcute)

    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like   'USER%`;
    
    select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like  'USER%`;
    *
    ERROR at line 1:
    ORA-00911: invalid character

    正しい方法は、それらの文字を削除して再試行することです

    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

    2。 このエラーは、SQL WHERE句で特殊文字が使用されており、値が一重引用符で囲まれていない場合に発生します。

    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%;
    
    select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%;
    *
    ERROR at line 1:
    ORA-00911: invalid character 

    正しいクエリは

    です
    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

    3 。クエリを終了するためにセミコロン(;)が追加された場合

    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';;
    
    select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
    *
    ERROR at line 1:
    ORA-00911: invalid character 

    オラクルはこの11g以上を改善しました

    select CHECKPOINT_CHANGE# from v$database;;
    
    select CHECKPOINT_CHANGE# from v$database;
    *
    ERROR at line 1:
    ORA-00933: SQL command not properly ended 

    正しい方法は、単一のセミコロンを使用することです

    SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
    SQL> select CHECKPOINT_CHANGE# from v$database;
    

    4 。セミコロン(;)を追加して、pl/sqlの即時実行でクエリを終了する場合

    SQL> begin
    execute immediate 'select * from v$database;';
    end;
    /
    begin
    *
    ERROR at line 1:
    ORA-00911: invalid character
    ORA-06512: at line 2 

    オラクルはこの11g以上を改善しました

    begin
    execute immediate 'select * from v$database;';
    end;
    / 
    begin
    *
    ERROR at line 1:
    ORA-00933: SQL command not properly ended
    ORA-06512: at line 2 

    正しい方法は

    です
    begin
    execute immediate 'select * from v$database';
    end;
    /

    5。 また、SQLステートメントで特殊文字を使用しようとしたときにも発生します。列またはOracleテーブルの名前に$、_、および#以外の特殊文字を使用する場合は、名前を二重引用符で囲む必要があります。

    create table example (j% number);  
    
    create table example (j% number) 
    *
    ERROR at line 1: 
    ORA-00911: invalid character 

    正しい方法

    それらを二重引用符で囲む必要があります“”

     SQL> create table example ("j%" number);  
    Table created.  

    6。 .netやjavaなどのプログラミング言語から実行されるクエリを終了するためにセミコロン(;)が追加された場合

    このコンテンツがORA-00911を解決することを願っています:Oracleデータベースの無効な文字。改善するためのフィードバックを提供し、この投稿にさらに多くのものを含めてください

    関連記事
    ORA-00936式がありません

    ORA-01017:ユーザー名/パスワードが無効です

    ora-29913:odciexttableopenコールアウトの実行中にエラーが発生しました

    ORA-00001一意性制約に違反しました

    ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。

    ORA-03113:通信チャネルのファイルの終わり

    Oracleドキュメント


    1. ORD()の例– MySQL

    2. MariaDB JSON_VALID()の説明

    3. MySQLでのRIGHT()関数のしくみ

    4. パラメータをt-sqlスクリプトに渡すにはどうすればよいですか?