Fórum Duvida em desenvolvimento de Relatorio #470612

20/02/2014

0

Bom dia !

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

Kaio

Responder

Posts

21/02/2014

Marisiana Battistella

Olá Caio!
Você está utilizando alguma package para armazenar os procedimentos e funções da tua aplicação?
Responder

Gostei + 0

21/02/2014

Marisiana Battistella

Se vc estiver utilizando package, você pode fazer da seguinte forma:

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...
Responder

Gostei + 0

21/02/2014

Kaio

Bom dia Marisiana!

Sim, estou criando o relatório através de uma procedure.

Me ajudou muito...

Muito Obrigado pela sua atenção.
Responder

Gostei + 0

21/02/2014

Marisiana Battistella

Por nada Kaio! =)
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...
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar