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