Re: [firebase-br] Duvidas básica
Gladiston Santana via lista <[email protected]> Wed, 12 Nov 2025 11:15:15 -0300
| Newsgroups | gmane.comp.db.firebase.portuguese |
|---|---|
| Message-ID | <CALv8-NMFu6fmD9p7W_8=nEdzdG5NgEYWECD=1UNQZfaaeNDWXQ@mail.gmail.com> |
Voce tem que trabalhar com cursores, open/close, mas apenas ficaria mais
verborr=E1gico, melhor usar cursores usando for/select assim:
EXECUTE BLOCK
RETURNS (
OUT_ID_CLIENTE_PROCESSADO INTEGER,
OUT_STATUS_OPERACAO VARCHAR(255)
)
AS
-- Vari=E1veis locais (mantidas como no exemplo anterior para clareza)
DECLARE V_CODIGO_CLIENTE INTEGER;
DECLARE V_NOME_COMPLETO VARCHAR(50);
DECLARE V_DATA_ULTIMA_COMPRA DATE;
DECLARE V_VALOR_TOTAL_DEBITO NUMERIC(10, 2);
DECLARE V_CATEGORIA_RISCO VARCHAR(100);
DECLARE V_MOTIVO_INATIVACAO BLOB SUB_TYPE TEXT;
DECLARE V_DIAS_LIMITE_COMPRA INTEGER =3D 365;
DECLARE V_VALOR_MAXIMO_DEBITO NUMERIC(10, 2) =3D 50.00;
BEGIN
FOR
SELECT
ID_CLIENTE, NOME_CLIENTE, DATA_COMPRA, VALOR_DEBITO,
CLASSIFICACAO_RISCO, DETALHE_INATIVACAO
FROM
CLIENTES
INTO
V_CODIGO_CLIENTE, V_NOME_COMPLETO, V_DATA_ULTIMA_COMPRA,
V_VALOR_TOTAL_DEBITO, V_CATEGORIA_RISCO, V_MOTIVO_INATIVACAO
DO
BEGIN
-- L=F3gica da Condi=E7=E3o de Dele=E7=E3o
IF (DATEADD(DAY, V_DIAS_LIMITE_COMPRA, V_DATA_ULTIMA_COMPRA) <
CURRENT_DATE
AND V_VALOR_TOTAL_DEBITO > V_VALOR_MAXIMO_DEBITO
AND V_CATEGORIA_RISCO =3D 'ALTO')
THEN
BEGIN
-- Execu=E7=E3o do DELETE
DELETE FROM CLIENTES
WHERE ID_CLIENTE =3D V_CODIGO_CLIENTE;
-- Sa=EDda de Auditoria/Log (COM ID na mensagem)
OUT_ID_CLIENTE_PROCESSADO =3D V_CODIGO_CLIENTE;
OUT_STATUS_OPERACAO =3D 'DELETADO: Cliente ID ' ||
CAST(V_CODIGO_CLIENTE AS VARCHAR(10)) || ' - Inativo por Risco.';
SUSPEND;
END
ELSE
BEGIN
-- Sa=EDda de Auditoria/Log (COM ID na mensagem)
OUT_ID_CLIENTE_PROCESSADO =3D V_CODIGO_CLIENTE;
OUT_STATUS_OPERACAO =3D 'MANTIDO: Cliente ID ' ||
CAST(V_CODIGO_CLIENTE AS VARCHAR(10)) || ' - Crit=E9rio de exclus=E3o n=E3o
atendido.';
SUSPEND;
END
END
END
Ao inves de excluir, voce pode acrescentar uma coluna para marcar para
exclus=E3o, e depois usar essa coluna para fazer um pente fino para desmarc=
ar
falsos positivos. Excluir diretamente numa tacada s=F3, n=E3o tem volta. Ve=
ja
se sua tabela tem ER (Integridade referencial), excluir um cliente e depois
sumir todos os pedidos, n=E3o ser=E1 agrad=E1vel de explcar depois.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.fi=
rebase.com.br/fb/artigo.php?id=3D1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista=
.html