Gostaria de saber se é necessário escrever commit após inserir / excluir / atualizar na função / procedimento?
Exemplo:
create or replace function test_fun
return number is
begin
delete from a;
return 0;
end;
ou procedimento
create or replace procedure aud_clear_pro
as
begin
delete from a;
end;
ele precisa confirmar após excluir?
Não consigo entender a seguinte situação:
Se eu chamar a função / procedimento da janela SQL, será necessário confirmar
mas
Se eu agendar função / procedimento usando dbms_scheduler e executar o trabalho, a instrução delete será automaticamente confirmada.
PORQUE?
Para responder sua pergunta; PORQUE?
Você provavelmente já sabe disso agora, já que o post tem 2 anos. Mas vou responder apenas para o registro.
O motivo # 1 requer uma confirmação e o nº 2 não é porque a configuração padrão do banco de dados no Oracle é confirmar uma transação quando uma sessão termina. Se você estiver no sqlplus e executar seu código manualmente, ele não confirmará a transação imediatamente. Se você emitir uma confirmação explícita OU você fizer logoff do sqlpus, a transação será confirmada.
O motivo pelo qual você obtém uma confirmação automática no 2 é porque ele cria uma sessão para executar seu script. Quando concluído, ele efetua logoff automaticamente, o que causará uma confirmação automática.
fonte