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
で取得できます。
お役に立てば幸いです:)