Res: [firebase-br] Nº Sequencial em um select

Edson de Paulo epaulo2002 em yahoo.com.br
Qua Set 19 14:50:33 -03 2007


Olá Wilton, valeu pelo exemplo, via procedure eu já havia conseguido. Só 
achei uma pena o FireBird não ter um "COMANDO" que trouxesse o nº da 
linha do registro no select.

Vou criar uma coluna na tabela para facilitar em alguns relatórios.

Abraço e obrigado

-- 
Edson de Paulo
Curitiba - PR




Wilton Junior escreveu:
> da uma olhada nesta que eu fiz.
> 
> SET TERM ^ ;
> CREATE PROCEDURE PR_GANHADORES (
>     pidpremio INTEGER)
> RETURNS (
>     pntotal INTEGER,
>     pnidsegmentos INTEGER,
>     pcsegmento VARCHAR(100),
>     pnidcategorias INTEGER,
>     pccategoria VARCHAR(100),
>     pnnotafinal NUMERIC(7,2),
>     pcparticipante VARCHAR(100),
>     pcpeca VARCHAR(200),
>     pctipoinscricao VARCHAR(10))
> AS
> DECLARE VARIABLE vnidcategorias INTEGER;
> DECLARE VARIABLE vnidsegmentos INTEGER;
> DECLARE VARIABLE vcretorno VARCHAR(1000);
> DECLARE VARIABLE vctipoinscricao VARCHAR(10);
> BEGIN
>     pnTotal = 0;
>     vnidsegmentos = 0;
>     vnidcategorias = 0;
>     vctipoinscricao = '';
>     FOR SELECT i.id_segmentos,
>                sg.descricao segmento,
>                i.id_categoria,
>                ct.descricao categoria,
>                pt.nome, 
>                i.nome_peca,
>                i.nota_final,
>           CASE i.tipo_inscricao
>             WHEN 'A' THEN 'Agência'
>             WHEN 'G' THEN 'Gráfica'
>             WHEN 'E' THEN 'Estudante'
>           END tipo_inscricao
>         FROM   inscricao i
>         JOIN   segmentos sg ON (i.id_segmentos = sg.id_segmentos)
>         JOIN   categorias ct ON (i.id_categoria = ct.id_categoria AND i.id_segmentos = ct.id_segmentos)
>         JOIN   participantes pt ON (i.id_participante = pt.id_participante)
>         WHERE id_premio = :pidPremio
>         ORDER BY i.tipo_inscricao,i.id_segmentos,i.id_categoria, i.nota_final  DESC
>     INTO :pnIdSegmentos, :pcSegmento, :pnIdCategorias,
>          :pcCategoria,:pcparticipante,pcpeca, :pnNotaFinal,
>          :pctipoinscricao
> DO
>     BEGIN /* begin the loop */
>         if (vnidcategorias <> pnidcategorias) THEN
>            IF  (vnidsegmentos <> pnidsegmentos) THEN
>             pnTotal = 0;
>         if (vnidcategorias <> pnidcategorias) THEN
>            IF  (vnidsegmentos = pnidsegmentos) THEN
>             pnTotal = 0;
>         if (vnidcategorias <> pnidcategorias) THEN
>            IF  (vnidsegmentos = pnidsegmentos) THEN
>              if (vctipoinscricao <> pctipoinscricao) then
>                 pnTotal = 0;
>         if (vnidcategorias = pnidcategorias) THEN
>            IF  (vnidsegmentos = pnidsegmentos) THEN
>              if (vctipoinscricao <> pctipoinscricao) then
>                 pnTotal = 0;
>         pnTotal = pnTotal + 1;
>         vcRetorno = CAST(pnTotal AS VARCHAR(5))||' '||pcparticipante||' '||
>         pcpeca ||' '|| pnIdSegmentos ||' '|| pcSegmento ||' '||pnIdCategorias||' '||
>                     pcCategoria ||' '||pnNotaFinal||' '||pctipoinscricao;
>         vnidsegmentos   = pnidsegmentos;
>         vnidcategorias  = pnidcategorias;
>         vctipoinscricao = pctipoinscricao;
>         SUSPEND; /* this outputs one row per loop */
>     END
> END^
> SET TERM ; ^
> 
>  
> 
> 
> 
> Wilton Pereira Dias Júnior
> JR Tecnologia
> (62) 8418-1660
> MSN: wiltonjunior em msn.com
> 
> 





Mais detalhes sobre a lista de discussão lista