dans Oracle, vous pouvez analyser une requête avant de l'exécuter
declare
l_theCursor integer default dbms_sql.open_cursor;
begin
dbms_sql.parse( l_theCursor, 'SELECT 1 FROM DUAL', dbms_sql.native );
end;
ce qui est de toute façon une bonne pratique puisque vous recevrez votre SQL à partir de l'entrée de l'utilisateur. si l'instruction n'est pas valide, vous obtiendrez le message d'erreur approprié. Bien sûr, l'instruction n'est pas exécutée par ce qui précède.
Après avoir analysé l'instruction, vous pouvez interroger v$sql pour connaître le command_type :
select command_type, sql_text
from v$sql t
where sql_text = 'SELECT 1 FROM DUAL';
Les différents types_commandes sont comme suit :
2 -- INSÉRER
3 -- CHOISIR
6 -- MISE À JOUR
7 -- SUPPRIMER
189 -- FUSIONNER
vous pouvez obtenir la liste complète en select * from audit_actions order by action
J'espère que ça aide :)