[firebase-br] Alguem me ajuda a compreender porque o EXCEPTION na Trigger Bloquei o meu client delphi uso IBX (
Mário Reis
mariodosreyx em gmail.com
Sexta Setembro 26 16:23:38 -03 2025
CREATE TRIGGER EMPRESAS_BIU FOR EMPRESAS
ACTIVE BEFORE
INSERT OR
UPDATE
POSITION 0
AS
DECLARE VARIABLE SCP4 VARCHAR(10) COLLATE PXW_INTL850;
DECLARE VARIABLE SCP3 VARCHAR(10) COLLATE PXW_INTL850;
DECLARE VARIABLE SCP7 VARCHAR(20) COLLATE PXW_INTL850;
BEGIN
/* 1. Validação cruzada CP4 + CP3 na tabela CP7DESIG */
IF (NEW.CP4 IS NOT NULL AND NEW.CP3 IS NOT NULL) THEN
BEGIN
IF (NOT EXISTS(
SELECT 1 FROM CP7DESIG
WHERE CP4_ID = NEW.CP4 AND CP3_ID = NEW.CP3
)) THEN
-- Não se pode usar diretamente: -- EXCEPTION EX_CP7_INVALID; -- "Cannot
update. (No update query)
Execute Procedure
MSG_ERRO_NO('APL010','Código Postal ou de Artéria inválido(s);'); --
Versus EXCEPTION EX_CP7_INVALID; bloquei a aplicação delphi xe7 "Cannot
update. (No update query)
-- substituindo pela procedure que no fim executa um exception Exception
Stop S_MSGTXT ; ainda à moda do FB1.5 ou 2.0
END
--- Nota: CREATE EXCEPTION EX_CP7_INVALID 'CP7: Código Postal ou da Artéria
inválido(s).'; ou que rai está a acontecer
/* 2. Normalização CP4 */
SCP4 = TRIM(CAST(COALESCE(NEW.CP4, '') AS VARCHAR(10)));
IF (CHAR_LENGTH(SCP4) > 4) THEN
SCP4 = SUBSTRING(SCP4 FROM 1 FOR 4);
SCP4 = LPAD(SCP4, 4, '0');
/* 3. Normalização CP3 */
SCP3 = TRIM(CAST(COALESCE(NEW.CP3, '') AS VARCHAR(10)));
IF (CHAR_LENGTH(SCP3) > 3) THEN
SCP3 = SUBSTRING(SCP3 FROM 1 FOR 3);
SCP3 = LPAD(SCP3, 3, '0');
/* 4. Concatenação e atribuição */
NEW.CP7_ID = SCP4 || SCP3;
END;
Há alguem disponivel para ajudar!? Obrigado
Atentamehte
Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146
Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.
Mais detalhes sobre a lista de discussão lista