Me pregunto si es necesario escribir commit después de insertar / eliminar / actualizar en función / procedimiento.
Ejemplo:
create or replace function test_fun
return number is
begin
delete from a;
return 0;
end;
o procedimiento
create or replace procedure aud_clear_pro
as
begin
delete from a;
end;
¿necesita confirmación después de eliminar?
No puedo entender la siguiente situación:
Si llamo a la función / procedimiento desde la ventana SQL, entonces requiere confirmación
pero
Si programo una función / procedimiento usando dbms_scheduler y ejecuto el trabajo, la declaración de eliminación se confirma automáticamente.
¿POR QUÉ?
Para responder tu pregunta; ¿POR QUÉ?
Probablemente ya lo sepas ya que la publicación tiene 2 años. Pero responderé solo por el registro.
La razón # 1 requiere una confirmación y no # 2 es porque la configuración de base de datos predeterminada en Oracle es confirmar una transacción cuando finaliza una sesión. Si está en sqlplus y ejecuta su código manualmente, no confirmará la transacción de inmediato. Si emite una confirmación explícita O cierra la sesión de sqlpus, la transacción se confirmará.
La razón por la que obtienes una confirmación automática en el n. ° 2 es porque crea una sesión para ejecutar tu script. Cuando se completa, se cierra automáticamente, lo que provocará una confirmación automática.
fuente