[firebase-br] Numero sequencial por item
Flavio Divino
flaviodivino em gmail.com
Sáb Jan 16 17:54:19 -03 2016
Olá pessoal, preciso atualizar um campo (ZF4_CODBEN) de forma sequencial
conforme o codigo do contrato vai mudando.
Exemplo:
select first 20
zf4.zf4_contra,
zf4.zf4_tipo,
ZF4.zf4_codben,
zf4.zf4_nome
from zf4
order by zf4.zf4_contra, zf4.zf4_tipo desc
Essa consulta me retorna isso:
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
| ZF4_CONTRA | ZF4_TIPO | ZF4_CODBEN | ZF4_NOME
|
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
| 000001 | T | | JOAO GREGORIO DA SILVA
| 000001 | F | | JOSE GREGORIO DA SILVA
| 000001 | D | | NACI DE OLIVEIRA SILVA
| 000001 | D | | PEDRO DE OLIVEIRA
| 000001 | D | | ALCEDINA JOSEFA DO NASCIMENTO
| 000001 | D | | GLEICE HELEN MARTINS DUARTE SANTOS
| 000001 | D | | ANNA LUCIA NASCIMENTO
| 000002 | T | | JOSE LAUREANO DE SOUZA
| 000002 | F | | CAROLINA MARIA DE JESUS
| 000002 | F | | ANTONIO LAUREANO DE SOUZA
| 000002 | F | | EVA PEREIRA DE ABREU
| 000002 | D | | NILMA ABREU DE SOUZA
| 000002 | D | | VILMA ABREU DE SOUZA
| 000002 | D | | VILMAR ABREU DE SOUZA
| 000002 | D | | ROSALINA ABREU DE SOUZA
| 000003 | T | | DORALICE BORGES REIS
| 000003 | F | | JOSE LUIZ MISCENA BORGES
| 000003 | D | | MARINALVA MISCENA BORGES
| 000003 | D | | MARIA DE JESUS REIS BORGES
| 000003 | D | | MARILYA BRASILIA NASCIMENTO BORGES
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
E na verdade eu precisaria disso:
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
| ZF4_CONTRA | ZF4_TIPO | ZF4_CODBEN | ZF4_NOME
|
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
| 000001 | T | 1 | JOAO GREGORIO DA SILVA
| 000001 | F | 2 | JOSE GREGORIO DA SILVA
| 000001 | D | 3 | NACI DE OLIVEIRA SILVA
| 000001 | D | 4 | PEDRO DE OLIVEIRA
| 000001 | D | 5 | ALCEDINA JOSEFA DO NASCIMENTO
| 000001 | D | 6 | GLEICE HELEN MARTINS DUARTE SANTOS
| 000001 | D | 7 | ANNA LUCIA NASCIMENTO
| 000002 | T | 1 | JOSE LAUREANO DE SOUZA
| 000002 | F | 2 | CAROLINA MARIA DE JESUS
| 000002 | F | 3 | ANTONIO LAUREANO DE SOUZA
| 000002 | F | 4 | EVA PEREIRA DE ABREU
| 000002 | D | 5 | NILMA ABREU DE SOUZA
| 000002 | D | 6 | VILMA ABREU DE SOUZA
| 000002 | D | 7 | VILMAR ABREU DE SOUZA
| 000002 | D | 8 | ROSALINA ABREU DE SOUZA
| 000003 | T | 1 | DORALICE BORGES REIS
| 000003 | F | 2 | JOSE LUIZ MISCENA BORGES
| 000003 | D | 3 | MARINALVA MISCENA BORGES
| 000003 | D | 4 | MARIA DE JESUS REIS BORGES
| 000003 | D | 5 | MARILYA BRASILIA NASCIMENTO BORGES
+---------------------+-----------------+---------------------+----------------------------------------------------------------------------+
Tentei fazer a atualização do campo zf4_codben com uma procedure, mas ela
funciona parcialmente.
BEGIN
FOR
select distinct
zf4.zf4_ctrant
from
zf4
order by zf4.zf4_contra, zf4.zf4_tipo desc
INTO :ZF4_CTRANT
DO
BEGIN
SQL = 'ALTER SEQUENCE CONTADOR RESTART WITH 0;';
execute statement :SQL;
UPDATE ZF4 SET
zf4_codben = lpad(GEN_ID(CONTADOR, 1),4,'0') where zf4.zf4_ctrant =
:ZF4_CTRANT order by zf4.zf4_contra, zf4.zf4_tipo desc;
SUSPEND;
END
END
Não sei aonde eu possa estar errando.
Gostaria da ajuda de vocês.
Mais detalhes sobre a lista de discussão lista