en Oracle puede analizar una consulta antes de ejecutarla
declare
l_theCursor integer default dbms_sql.open_cursor;
begin
dbms_sql.parse( l_theCursor, 'SELECT 1 FROM DUAL', dbms_sql.native );
end;
lo cual es una buena práctica de todos modos, ya que recibirá su SQL de la entrada del usuario. si la declaración no es válida, recibirá el mensaje de error correspondiente. Por supuesto, la declaración no es ejecutada por lo anterior.
Después de analizar la declaración, puede consultar v$sql para averiguar el tipo_comando:
select command_type, sql_text
from v$sql t
where sql_text = 'SELECT 1 FROM DUAL';
Los diversos commands_types son así:
2 -- INSERTAR
3 -- SELECCIONAR
6 -- ACTUALIZAR
7 -- ELIMINAR
189 -- FUSIONAR
puede obtener la lista completa mediante select * from audit_actions order by action
Espero que ayude :)