COMO EXIBIR UMA CONSULTA (SELECT) EM UM ARQUIVO TXT?

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
inforjo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 30
Registrado em: Qui, 18 Fev 2010 9:37 am
Localização: FORTALEZA

A consulta é a seguinte:

Selecionar tudo

cursor c_orgao3  is
					select count(ipr_importado) LOG_IMP  
					from t015imagemprocesso 
					union
					select count(ipr_importado) 
					from t015imagemprocesso 
					where ipr_importado = 'S'
					union
					select count(ipr_importado)  
					from t015imagemprocesso 
					where ipr_importado = 'N'
					union
					select count(ipr_importado)  
					from t015imagemprocesso 
					where ipr_importado = 'S'and pro_ano = 2010 
					union
					select count(ipr_importado) 
					from t015imagemprocesso 
					where  pro_ano = 2010 
					union
					select count(ipr_importado) 
					from t015imagemprocesso 
					where ipr_importado = 'N' 
					and pro_ano = 2010  
Tenho um exemplo

Selecionar tudo


    NOME_ARQ := TO_CHAR(SYSDATE,'DDMMYYYY-HH24MI');
  -- Abrindo o arquivo texto no qual serão gerados os registros
  NomeArquivo :=  vdiretorio||'\'||'importação processos'||NOME_ARQ;
	varquivotxt:=text_io.fopen(NomeArquivo, 'W');
	Linha := 'IMPORTAÇÃO DE PROCESSOS - DATA:';
	text_io.put_line(varquivotxt, Linha);
 	first_record;

Acho que tenho que abrir o cursor

Selecionar tudo

 open c_orgao3
 fetch c_orgao3 into (como eu coloco aqui? tenho varios "select count(coluna)" usando union como mostra a consulta acima)
 close c_orgao3

Linha := ----------> aqui será exibido a consulta mais não sei como faço;
text_io.put_line(varquivotxt, Linha);
 first_record;  -- (COMO POSSO USAR O  first_record???)


posso fazer:

Selecionar tudo

Linha := 'IMPORTAÇÃO DE PROCESSOS'; 
text_io.put_line(varquivotxt, Linha); 
Linha := 'IMPORTAÇÃO DE PROCESSOS2'; 
text_io.put_line(varquivotxt, Linha); 
first_record; 
resultado:

Selecionar tudo

IMPORTAÇÃO DE PROCESSOS 
IMPORTAÇÃO DE PROCESSOS2 
é issso?!?!?

e o next_record uso em loops?!?!?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

pow cara, sem querer se chato, mas outro post pra isso, parece até que não le as respostas,

arquivo é arquivo: FUNCOES TEXT_IO: PUT, PUT_LINE, GET, ETC
bloco é bloco: NEXT_RECORD, FIRST_RECORD...

Selecionar tudo

text_io.fopen(varquivotxt, 'w'); 
for i in c_orgao3 loop
  linha := i.LOG_IMP;

  text_io.put_line(varquivotxt, Linha); 
end loop;
text_io.fclose(varquivotxt);
inforjo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 30
Registrado em: Qui, 18 Fev 2010 9:37 am
Localização: FORTALEZA

Selecionar tudo

ERRO 306 linha 108, column 10
wrong number types of arguments in call to 'C_ORGAO3'

ERRO 0 at line 108 column
statement ignored

Traduzindo...

Selecionar tudo

ERRO 306 Linha 108, coluna 10
tipos de número errado de argumentos na chamada para 'C_ORGAO3'

ERRO 0 na linha 108 coluna
declaração ignorada
será que tem que abrir o cursor e fechar o cursor ?!?!

desde já obrigado.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Tem cursor que precisa e cursor que não precisa,

chamados de cursores implicitos e explicitos, pesquise sobre e veja a diferenca,

explicito - o que você tinha postado
implicito - o que eu postei
inforjo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 30
Registrado em: Qui, 18 Fev 2010 9:37 am
Localização: FORTALEZA

valeu diegolenhardt é isso mesmo. muitissimo obrigado!!!
fiz o seguinte:

Selecionar tudo

open c_orgao3 (:controle.cod_empresa);
						loop
							fetch c_orgao3 into vTOTAL_IMPORTADOS;
							if c_orgao3%NOTFOUND then exit;
							end if;
								linha := vTOTAL_IMPORTADOS; 
								text_io.put_line(varquivotxt, Linha);
						end loop; 
					close c_orgao3;
tenho outro probleminha.
o meu codigo não aceita concatenar a coluna do select usando union, exemplo:


Selecionar tudo

cursor c_orgao3(vEMP_CODIGOEMPRESA char)  is
					select count(ipr_importado) as TOTAL_IMPORTADOS 
					from sistema.t015imagemprocesso 
					where EMP_CODIGOEMPRESA= vEMP_CODIGOEMPRESA
					union
					select count(ipr_importado) as IMPORTADOS
					from sistema.t015imagemprocesso 
					where ipr_importado = 'S' and EMP_CODIGOEMPRESA= vEMP_CODIGOEMPRESA
					union ...

e quero concatenar assim:

Selecionar tudo

select 'Quantidade processo.......................'||count(ipr_importado) as TOTAL_IMPORTADOS 
já usei:

Selecionar tudo

to_char( Quantidade processo importado.....'||count(ipr_importado))
Os dois metodos só serve quando run(rodo) no pl-sql, mas no trigger/evento do botão no oracle form não funciona.
meio esquisito isso.

Selecionar tudo

Error line 399 collumn 13
different type of columns in UNION, INTERSECT, MINUS expression
Error 0 at line 36, collumn 6
Statment ignored
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

o Forms 6i usa o compilador de PLSQL com versão 8i, você deve estar rodando direto no banco com o PLSQL Developer, e a versão do banco deve ser superior, tenta colocar alias nas colunas,

ou então 'Quantidade processo importado....'||to_char(count(ipr_importado)

different type of columns in UNION, INTERSECT, MINUS expression

na verdade, o que esta acontecendo é que pra um retorno do union está vindo number, e outro union está retornando char,

faca to_char em todos,

manjou?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes