Olá,
Criei um relatório clássico na minha aplicação via função SQL. A cada dia, ela inclui uma nova coluna no relatório referente ao dia. Porém, quando eu acesso o relatório, após a atualização de mais um dia, dá erro ORA-01403. Esse erro para de aparecer quando eu entro no APEx para editar a página e salvo aí a nova coluna começa a aparecer.
Relatório clássico e função sql
-
- Rank: Analista Sênior
- Mensagens: 155
- Registrado em: Sex, 17 Out 2008 6:05 pm
- Localização: Campo Grande - MS
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
ORA-01403: no data found
Como você ta fazendo a sua função ?
é porque alguma query não ta retornando linha em um bloco PLSQL.
Como você ta fazendo a sua função ?
-
- Rank: Analista Sênior
- Mensagens: 155
- Registrado em: Sex, 17 Out 2008 6:05 pm
- Localização: Campo Grande - MS
O relatório é criado com este comando pl/sql:
E a tabela é desta forma:
E assim sucessivamente, no final do dia há um job que insere os dados refrentes ao dia. Então após isso, a tabela deveria estar:
Mas não é o que acontece.
declare
comando varchar2(32767);
cursor datas is select distinct trunc(dt_lev) from table1 order by trunc(dt_lev);
dt_menor date;
v_data date;
begin
comando := 'select campo1,';
dt_menor:= to_date('27/02/2015','DD/MM/YYYY');
open datas;
loop
fetch datas into v_data;
exit when datas%notfound;
if (v_data > dt_menor) then
comando := comando ||tot1||' '||chr(34)||to_char(v_data,'DD/MM/YYYY')||chr(34)||',';
end if;
end loop;
comando := rtrim(comando,',');
comando := comando ||' from table1 group by campo1 order by campo1';
close datas;
return(comando);
end;
Campo1 09/03/2015 10/03/2015
X 77 88
y 22 33
Campo1 09/03/2015 10/03/2015 11/03/2015
X 77 88 99
y 22 33 99
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Coloca pra nós um exemplo de query que ele está montando.
Acho que o problema é a criação da query.
Pelo que eu vi, é algo assim:
Onde esse CAMPO1 vem de TOT1, que a gente não sabe bem o que pode ter.
Ta estranho, pois normalmente com
Acho que o problema é a criação da query.
Pelo que eu vi, é algo assim:
select campo1, CAMPO1 "09/03/2015", CAMPO2 "10/03/2015", CAMPO3 "11/03/2015"
from table1 group by campo1 order by campo1
Ta estranho, pois normalmente com
GROUP BY
, é preciso ter um SUM
ali pra você obter o seu resultado. E não estou vendo isso.-
- Rank: Analista Sênior
- Mensagens: 155
- Registrado em: Sex, 17 Out 2008 6:05 pm
- Localização: Campo Grande - MS
O PL/SQL correto seria esse:
A query produzida seria:
declare
comando varchar2(32767);
cursor datas is select distinct trunc(dt_lev) from table1 order by trunc(dt_lev);
dt_menor date;
v_data date;
begin
comando := 'select campo1,';
dt_menor:= to_date('27/02/2015','DD/MM/YYYY');
open datas;
loop
fetch datas into v_data;
exit when datas%notfound;
if (v_data > dt_menor) then
comando := comando ||fc1(campo1,v_data)||' '||chr(34)||to_char(v_data,'DD/MM/YYYY')||chr(34)||',';
end if;
end loop;
comando := rtrim(comando,',');
comando := comando ||' from table1 group by campo1 order by campo1';
close datas;
return(comando);
end;
select campo1, fc1(campo1,'09/03/2015') "09/03/2015", fc1(campo1,'10/03/2015') "10/03/2015", fc1(campo1,'11/03/2015') "11/03/2015"
from table1 group by campo1 order by campo1
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bem, num GROUP BY, todos campos devem ter uma função tipo SUM, AVG, MIN, MAX, etc. (menos as que estão no GROUP BY).
Veja:
O Apex deve estar gerando algum erro assim internamente.
Veja:
SQL> select
2 code_combination_id, chart_of_accounts_id
3 from gl_code_combinations
4 group by code_combination_id
5 /
select
code_combination_id, chart_of_accounts_id
from gl_code_combinations
group by code_combination_id
ORA-00979: not a GROUP BY expression
SQL>
-
- Rank: Analista Sênior
- Mensagens: 155
- Registrado em: Sex, 17 Out 2008 6:05 pm
- Localização: Campo Grande - MS
Group by funciona. O problema acontece quando é uma nova data é incluída.
Tirei o group by e coloquei distinct
Tirei o group by e coloquei distinct
-
- Rank: Analista Sênior
- Mensagens: 155
- Registrado em: Sex, 17 Out 2008 6:05 pm
- Localização: Campo Grande - MS
O erro continua, não era a questão do group by ou distinct.
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Sáb, 18 Nov 2006 11:51 am
- Localização: Rio de Janeiro - RJ
Pessoal:
Está faltando no group by a coluna chart_of_accounts_id.
Erro explicativo no link abaixo:
http://www.dba-oracle.com/t_ora_00979_n ... ession.htm
Pelo jeito você terá também que montar dinamicamente as colunas v_data que você agrega no
Não entendi muito bem, mas parece que na clausula GROUP BY e ORDER BY além do campo1 terá que existir os demais campon originados pelas colunas montadas de v_data.
Abs, Renato
select
code_combination_id, chart_of_accounts_id
from gl_code_combinations
group by code_combination_id
ORA-00979: not a GROUP BY expression
Erro explicativo no link abaixo:
http://www.dba-oracle.com/t_ora_00979_n ... ession.htm
Pelo jeito você terá também que montar dinamicamente as colunas v_data que você agrega no
comando := comando ||' from table1 group by campo1 order by campo1';
Abs, Renato
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes