Fórum Duvida em desenvolvimento de Relatorio #470612
20/02/2014
0
Minha duvida e o seguinte desenvolvi um relatório porem surgiu a necessidade de adicionar um parâmetro para buscar se um agente e do tipo fornecedor ou cliente porem o usuário precisa passar o parâmetro na geração, quero colocar se for cliente o usuário colocaria 'C' senão 'F' ou para buscar os dois tipos colocaria 'T', tenho a logica como fazer isso só não sei com ficaria no PLSQL. Desde já Agradeço.
Kaio
Curtir tópico
+ 0Posts
21/02/2014
Marisiana Battistella
Você está utilizando alguma package para armazenar os procedimentos e funções da tua aplicação?
Gostei + 0
21/02/2014
Marisiana Battistella
Dentro da tua package vc terá que definir o tipo público:
-- Declaração de tipos públicos
TYPE t_refcur IS REF CURSOR; Este será o cursor utilizado para o retorno dos teus dados...
Na package body, vc vai criar um procedimento que vai receber os parâmetros necessários para realizar a consulta e nesse procedimento vc irá testar qual é o parâmetro definido pelo usuário (o tipo de agente) e faz o devido select retornando os dados no cursor.
PROCEDURE <nome_procedure> (in_agente IN <nome_esquema>.<nome_tabela>.<nome_campo>%TYPE,
out_result OUT t_refcur) IS
BEGIN
IF (in_agente = 'C' ) THEN
OPEN out_result FOR
SELECT <campos>
FROM <tabelas>
WHERE <campo> = in_agente; --- faz o select necessário
ELSEIF (in_agente = 'F') THEN
OPEN out_result FOR
SELECT <campos>
FROM <tabelas> ;
WHERE <campo> = in_agente; --- faz o select necessário
ELSE
SELECT <campos>
FROM <tabelas> ; -- faz select que vai buscar todos
END IF;
END <nome_procedure>;
Agora é só executar este procedimento na tua aplicação passando os parâmetros necessários e pegando os dados retornados no cursor...
Gostei + 0
21/02/2014
Kaio
Sim, estou criando o relatório através de uma procedure.
Me ajudou muito...
Muito Obrigado pela sua atenção.
Gostei + 0
21/02/2014
Marisiana Battistella
Tem casos que não precisa necessariamente utilizar o IF, vc pode utilizar um CASE.. WHEN na claúsula WHERE do teu select.
Não arriquei demonstrar dessa forma porque não conheço as estrutura das tuas tabelas...
Mas, assim, faria apenas um select e retornaria os valores no cursor, da mesma forma que no exemplo que citei...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)