Senhores...
estou com um Problema..
Preciso executar os escriptis que e gereado nessa proc...
Essa Proc Gera os Arquivos...masi não Executa os Comandos ....
CREATE OR REPLACE PROCEDURE KILL_SESSION IS
CURSOR MATA_SESSION IS
SELECT 'ALTER SYSTEM KILL SESSION '||CHR(39)||SID||','||SERIAL#||CHR(39)
||';' LINHA FROM V$SESSION WHERE STATUS = 'SNIPED';
F1 UTL_FILE.FILE_TYPE;
V_LINHA VARCHAR2(240);
BUFFER VARCHAR2(1000);
CONT NUMBER;
BEGIN
--O OBJETO DIRECTORY DBDIR FOI CRIADO PREVIAMENTE
F1 := UTL_FILE.FOPEN('DBDIR', 'KILL_SESSION.SQL','W');
FOR I IN MATA_SESSION LOOP
V_LINHA := I.LINHA;
UTL_FILE.PUT_LINE(F1,V_LINHA);
END LOOP;
UTL_FILE.FCLOSE(F1);
F1 := UTL_FILE.FOPEN('DBDIR', 'KILL_SESSION.SQL','R'); -- ABRE O ARQUIVO PARA LEITURA
loop
BEGIN
UTL_FILE.GET_LINE(F1, BUFFER); -- LE O CONTEUDO SO ARQUIVO CRIADO
EXCEPTION
WHEN NO_DATA_FOUND THEN
Exit;
END;
end loop;
UTL_FILE.FCLOSE(F1); -- FECHA O ARQUIVO
END;
Acho que você pode fazer isso de duas formas:
* Executar via EXECUTE IMMEDIATE (colocando um begin e end; )
* Fazer com que o sistema operacional execute isso como se fosse um script do SQL*plus. (você literalmente chama o sql*plus e passa o script em questão).