Fórum Procedure Oracle com count(*) #497072
08/10/2014
0
Onde esta o erro nesta procedure?
create or replace procedure p_emp_marca (pdata_inicial in date, pdata_final in date, pVarejo in varchar, pVenda_direta in varchar) as begin select fabricante, count(*) from emplacamento where data >= pdata_inicial and data <= pdata_final and venda_vajejo_ou_direta in (pVarejo,pVenda_direta) group by fabricante order by count(*) desc; end p_emp_marca;
Ederson Luiz
Curtir tópico
+ 0Post mais votado
14/10/2014
create or replace procedure p_emp_marca (pdata_inicial in date,
pdata_final in date,
pVarejo in varchar,
pVenda_direta in varchar,
t_refcursor out SYS_REFCURSOR) as
begin
open t_refcursor for
select em.fabricante,
count(em.fabricante) as qtd_emplacamentos
from emplacamento em
where em.data >= pdata_inicial
and em.data <= pdata_final
and em.venda_vajejo_ou_direta in (pVarejo,pVenda_direta)
group by em.fabricante;
end p_emp_marca;
Marisiana Battistella
Gostei + 1
Mais Posts
13/10/2014
Lourival Queiroz
select cliente, count(*) from Pedido t group by cliente order by 2 desc
Gostei + 0
14/10/2014
Marisiana Battistella
select count(*)
Utilize aliás (apelidos) para as tabelas que estão sendo utilizadas, exemplo:
select em.fabricante,
count(em.idemplacamento) as qtd_emplacamentos
from emplacamento em
where em.data >= pdata_inicial
and em.data <= pdata_final
and em.venda_vajejo_ou_direta in (pVarejo,pVenda_direta)
group by em.fabricante
order by 2 desc; Gostei + 0
14/10/2014
Ederson Luiz
create or replace procedure p_emp_marca
(pdata_inicial in date,
pdata_final in date,
pVarejo in varchar,
pVenda_direta in varchar)
as
begin
select em.fabricante,
count(em.fabricante) as qtd_emplacamentos
from emplacamento em
where em.data >= pdata_inicial
and em.data <= pdata_final
and em.venda_vajejo_ou_direta in (pVarejo,pVenda_direta)
group by em.fabricante
;
end p_emp_marca;
ocorre o seguinte erro:
linha 8 PLS-00428: é esperada uma cláusula INTO nesta instrução SELECT.
Gostei + 0
14/10/2014
Marisiana Battistella
Se esse SQL retorna mais de uma linha você terá que utilizar um cursor.
Senão vc pode criar duas variáveis que irão receber os dados retornados, como no exemplo:
create or replace procedure p_emp_marca (pdata_inicial in date,
pdata_final in date,
pVarejo in varchar,
pVenda_direta in varchar,
v_fabricante out varchar,
v_emplacamentos out numeric) as
begin
select em.fabricante,
count(em.fabricante) as qtd_emplacamentos
into v_fabricante,
v_emplacamentos
from emplacamento em
where em.data >= pdata_inicial
and em.data <= pdata_final
and em.venda_vajejo_ou_direta in (pVarejo,pVenda_direta)
group by em.fabricante;
end p_emp_marca;
Gostei + 0
14/10/2014
Ederson Luiz
Funcionou perfeitamente.
Muito Obrigado.
Gostei + 0
14/10/2014
Marisiana Battistella
Gostei + 0
15/10/2014
Marisiana Battistella
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)