No sqlplus eu não sei, mas se quiser fazer via procedure seria alguma
coisa como a que estou te passando. Você só tem que mudar a abertura e
fechamento dos arquivos para dentro do loop com um contador.
O inconveniente é que os arquivos são obrigatoriamente gerados no
servidor. Talvez dê para colocar externo via nfs, mas nunca testei.
um abraço
Roberto
create or replace procedure GERA_TEXTO100(p_nome_texto in varchar2) as
l_output utl_file.file_type;
l_separator varchar2(10) default '\t';
l_dirvarchar2(50);
l_filename varchar2(70);
l_erro varchar2(500) default '';
linhax%rowtype;
--
--
-- Cursor que conterá a estrutura da Tabela
--
--
cursor x is
select y from z;
e_erro_processamento exception;
begin
-- Monta o nome do arquivo Texto
--
--
l_filename := trim(lower(p_nome_texto));
--
--
-- Verifica se os parametros foram passados
--
--
if p_nome_texto is null then
l_erro := 'Nome do arquivo Texto não informado';
raise e_erro_processamento;
end if;
--
--
-- Abre o arquivo Texto com o atributo de gravação (w)
--
--
l_output := utl_file.fopen(l_dir, l_filename, 'w');
if utl_file.is_open(l_output) = false then
l_erro := 'Arquivo Texto (Write) não criado';
raise e_erro_processamento;
end if;
--
--
-- Ler conteudo do cursor x e gerar o arquivo texto
--
--
open x;
loop
fetch x
into linha;
exit when x%notfound;
utl_file.put(l_output, x.columnvalue || l_separator);
utl_file.new_line(l_output);
end loop;
close x;
--
--
-- Fecha o arquivo texto gerado
--
--
utl_file.fclose(l_output);
--
--
-- Verifica se o arquivo foi gravado corretamente.
-- Abre o arquivo texto gerado com o atributo de leitura (r)
--
--
l_output := utl_file.fopen(l_dir, l_filename, 'r');
if utl_file.is_open(l_output) = false then
l_erro := 'Arquivo Texto (Read) não disponivel';
raise e_erro_processamento;
end if;
exception
when e_erro_processamento then
l_erro := l_erro || ' - ' || to_char(sqlcode) || ' - ' || sqlerrm;
raise_application_error(-20101, l_erro);
when no_data_found then
l_erro := l_erro || ' - ' || to_char(sqlcode) || ' - ' || sqlerrm;
raise_application_error(-20102, l_erro);
when others then
raise_application_error(-20102, to_char(sqlcode) || ' -
' || sqlerrm);
end gera_texto100;
Eli Dias escreveu:
> Bom dia.
>
> Obrigado pelas respostas com relação as faculdades vou realmente ficar
> no IBTA
>
> Mas preciso de uma ajuda, existe alguma forma de montar um script sql
> que ele faça o seguinte, na sua saída eu quero que ele preencha o .txt
> em 1000 linhas, após estas 1000 linhas ele começaria a distribuir as
> outras em um novo .txt.
> Seria uma limitação de linhas por spool, isso é possível?
>
> Abraços
>
>
>
>
>> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure
>> » Scripts » Tutoriais acesse:
>> http://www.oraclebr.com.br/codigo/ListaCodigo.php
>>
> --
>
>> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira
>> responsabilidade de seus remetentes.
>>
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> --
>
>> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
>> http://www.oraclebr.com.br/
>>
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>