in Oracle puoi analizzare una query prima di eseguirla
declare
l_theCursor integer default dbms_sql.open_cursor;
begin
dbms_sql.parse( l_theCursor, 'SELECT 1 FROM DUAL', dbms_sql.native );
end;
che è comunque una buona pratica poiché riceverai il tuo SQL dall'input dell'utente. se l'istruzione non è valida verrà visualizzato il messaggio di errore appropriato. Ovviamente l'istruzione non viene eseguita da quanto sopra.
Dopo aver analizzato l'istruzione puoi interrogare v$sql per scoprire il command_type:
select command_type, sql_text
from v$sql t
where sql_text = 'SELECT 1 FROM DUAL';
I vari command_types sono così:
2 -- INSERTO
3 -- SELEZIONA
6 -- AGGIORNAMENTO
7 -- ELIMINA
189 -- UNISCI
puoi ottenere l'elenco completo da select * from audit_actions order by action
Spero di esserti stato d'aiuto :)