Je me demande s'il est nécessaire d'écrire commit après insertion / suppression / mise à jour dans la fonction / procédure?
Exemple:
create or replace function test_fun
return number is
begin
delete from a;
return 0;
end;
ou procédure
create or replace procedure aud_clear_pro
as
begin
delete from a;
end;
faut-il valider après la suppression?
Impossible de comprendre la situation suivante:
Si j'appelle la fonction / procédure à partir de la fenêtre SQL, cela nécessite un commit
mais
Si je planifie une fonction / procédure à l'aide de dbms_scheduler et exécute le travail, l'instruction delete est automatiquement validée.
POURQUOI?
Pour répondre à ta question; POURQUOI?
Vous le savez probablement déjà depuis que le poste a 2 ans. Mais je répondrai juste pour le compte rendu.
La raison n ° 1 nécessite une validation et la n ° 2 ne l'est pas car le paramètre de base de données par défaut dans Oracle est de valider une transaction à la fin d'une session. Si vous êtes dans sqlplus et exécutez votre code manuellement, la transaction ne sera pas validée immédiatement. Si vous émettez un commit explicite OU vous vous déconnectez de sqlpus, la transaction sera validée.
La raison pour laquelle vous obtenez une validation automatique sur # 2 est qu'elle crée une session pour exécuter votre script. Une fois terminé, il se déconnecte automatiquement, ce qui entraînera une validation automatique.
la source