FAQ Procura Membros Registre-se Perfil MP's Login/Out
Veja também:
registros em uma linha
Busca de varias linhas de uma tabela

Efetuar repetição e concatenar as linhas

 
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> Reports
Mensagem Autor
Enviada: Qui, 29 Jul 2010 11:40 am     Assunto: Efetuar repetição e concatenar as linhas

Estou fazendo um relatório no qual faço o select que esta em anexo, retorna uma repetição com a variável garantias_emitente_pf. Agora vai a dúvida e dificuldade. Quero escrever no relatório uma linha seguida da outra. Tem como? como devo fazer?

Código:
SELECT    'Nota de Empenho Nº '
       || c.n_empenho
       || ', no valor de R$'
       || f_sys_mascara_real (c.vl_total_empenho, 2)
       || '('
       || extenso (c.vl_total_empenho)
       || '),'
       || ' oriundo do Processo Nº '
       || v.id_processo
       || ', '
       || CASE
             WHEN NVL (c.n_contrato, 0) = 0
                THEN  'datado de '
                            || TO_CHAR (c.dt_emissao_empenho, 'dd/mm/yyyy')
                            || ', '
             WHEN NVL (c.vl_contrato, 0) = 0
                THEN  'datado de '
                            || TO_CHAR (c.dt_emissao_empenho, 'dd/mm/yyyy')
                            || ', '
             ELSE    ' referente ao Contrato Nº '
                  || c.n_contrato
                  || ', datado de '
                  || TO_CHAR (c.dt_emissao_empenho, 'dd/mm/yyyy')
                  || ', no valor total de R$'
                  || f_sys_mascara_real (c.vl_contrato, 2)
                  || '('
                  || extenso (c.vl_contrato)
                  || '),'
          END AS garantias_emitente_pf
  FROM gar_garantias g, gar_vinculadas v, gar_complemento c, cad_orgao o
 WHERE v.id_processo = :P_ID_PROCESSO
   AND v.id_garantia = g.id_garantia
   AND id_tipo = 54
   AND c.id_garantia = g.id_garantia
   AND o.id_orgao = :P_ID_ORGAO
   AND c.id_orgao = o.id_orgao


Andre Luiz
Rank: Estagiário Júnior
Rank: Estagiário Júnior


Registrado em: Qui, 29 de Julho de 2010
Mensagens: 1
Cidade - UF: SC


Enviada: Qui, 29 Jul 2010 1:12 pm    

Opa, blza?
Se eu entendi bem, tu pode jogar essa query para uma função usando sys_refcursor.
Algo assim:

Código:

CREATE OR REPLACE FUNCTION funcao_teste(cur SYS_REFCURSOR) RETURN VARCHAR2 IS
  row_value LONG;
  RESULT LONG;
BEGIN

  LOOP
    FETCH cur
      INTO row_value;
    EXIT WHEN cur%NOTFOUND;
    IF (RESULT IS NULL)
    THEN
      RESULT := row_value;
    ELSE
      RESULT := RESULT || ' ' || row_value;
    END IF;
  END LOOP;
  CLOSE cur;

  RETURN(RESULT);
END funcao_teste;



SQL> SELECT funcao_teste(CURSOR (SELECT 'A' a
  2                         FROM dual
  3                       UNION
  4                       SELECT 'B'
  5                         FROM dual
  6                       UNION
  7                       SELECT 'C'
  8                         FROM dual
  9                       UNION
 10                       SELECT 'D'
 11                         FROM dual)) retorno
 12    FROM dual
 
RETORNO
--------------------------------------------------------------------------------
A B C D


_________________
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior


Registrado em: Sex, 5 de Setembro de 2008
Mensagens: 185
Cidade - UF: Igrejinha - RS


Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> Reports Todos os horários são GMT - 3 Hours
Página 1 de 1

 
 
. .