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

JAVAでjdbcTemplateのSQLクエリのタイプを判別する方法は?

    Oracleでは、クエリを実行する前に解析できます

    declare
        l_theCursor     integer default dbms_sql.open_cursor;
    begin
        dbms_sql.parse(  l_theCursor,  'SELECT 1 FROM DUAL', dbms_sql.native );
    end;
    

    これは、ユーザー入力からSQLを受け取るため、とにかく良い習慣です。ステートメントが無効な場合は、適切なエラーメッセージが表示されます。もちろん、ステートメントは上記では実行されません。

    ステートメントを解析した後、v $ sqlにクエリを実行して、command_typeを見つけることができます。

    select command_type, sql_text
    from v$sql t
    where sql_text = 'SELECT 1 FROM DUAL';
    

    さまざまなcommands_typesは次のようになります:

    2-挿入

    3--選択

    6-更新

    7-削除

    189-マージ

    完全なリストは、select * from audit_actions order by actionで取得できます。

    お役に立てば幸いです:)



    1. NodeJS、mysql接続を閉じません

    2. CakePHPデータベース構成をグローバルに変更する

    3. mysqliクエリのエコー

    4. postgreSQL9.3の動的テーブル名