[firebase-br] AS USER :IN_USER PASSWORD :IN_PWD -- just for example WITH autonomous TRANSACTION -- note autonomous transaction
Mário Reis via lista <[email protected]> Thu, 2 Oct 2025 19:48:54 +0000
| Newsgroups | gmane.comp.db.firebase.portuguese |
|---|---|
| Message-ID | <CAF_dzrkDaE=kFhK_YqXbaKFXcp8N7fMssaE2zwzQW5zOfxrsXw@mail.gmail.com> |
Gladiston,
Esta constru=E7=E3o =E9 de Confian=E7a?!
A ideia =E9 trazer da base de produ=E7=E3o os dados atuais e pass=E1-los pa=
ra uma
base noa que estou migrando.
Ora abaixo o Valor que est=E1 voltandoa da base externa(produ=E7=E3o)
Pessoas.Altura =E9 '0.02' mas na verdade nesta base de migra=E7=E3o que
exite esse valor em altura na base de produ=E7=E3o o valor em consulta dire=
ta =E9
1.72 ou 1.51 ou 1.55, 1.52
Assim n=E3o d=E1 para confiar assim h=E1 alguma outra forma de resolver ist=
o as
dua tabelas s=E3o PESSOAS ent=E3o em mem=F3ria confunde-se s=F3 poder=E1 se=
r um bug
CREATE PROCEDURE CONSULTA_EXTERNA_PESSOAS(
IN_USER TYPE OF USERID,
IN_PWD VARCHAR(20),
IN_ID SMALLINT)
RETURNS(
OUT_CONTA INTEGER,
OUT_ID BIGINT,
OUT_NOME VARCHAR(50),
OUT_APELIDO VARCHAR(20),
OUT_DTADM TYPE OF COLUMN SOCIOS.DATADM,
WPESSOA_ID TYPE OF COLUMN PESSOAS.PESSOA_ID,
WTITULO_ID TYPE OF COLUMN PESSOAS.TITULO_ID,
WAPELIDO TYPE OF COLUMN PESSOAS.APELIDO,
WNOME TYPE OF COLUMN PESSOAS.NOME,
WTIPO_ID TYPE OF COLUMN PESSOAS.TIPO_ID,
WNOBI TYPE OF COLUMN PESSOAS.NOBI,
WARQIDENT TYPE OF COLUMN PESSOAS.ARQIDENT,
WDATEMIBI TYPE OF COLUMN PESSOAS.DATEMIBI,
WSEXO TYPE OF COLUMN PESSOAS.SEXO,
WESTCIVIL TYPE OF COLUMN PESSOAS.ESTCIVIL,
WDAT_NASC TYPE OF COLUMN PESSOAS.DAT_NASC,
WNIF TYPE OF COLUMN PESSOAS.NIF,
WRFEMIT_NIF TYPE OF COLUMN PESSOAS.RFEMIT_NIF,
WDATNIF TYPE OF COLUMN PESSOAS.DATNIF,
WNOSEGSOCIAL TYPE OF COLUMN PESSOAS.NOSEGSOCIAL,
WRFEMIT_SEGSOC TYPE OF COLUMN PESSOAS.RFEMIT_SEGSOC,
WDATSEGSOC TYPE OF COLUMN PESSOAS.DATSEGSOC,
WCONCNASC_ID TYPE OF COLUMN PESSOAS.CONCNASC_ID,
WFREGNASC_ID TYPE OF COLUMN PESSOAS.FREGNASC_ID,
WPROFISSO_ID TYPE OF COLUMN PESSOAS.PROFISSO_ID,
WEMPRESA_ID TYPE OF COLUMN PESSOAS.EMPRESA_ID,
WRELACAO_ID TYPE OF COLUMN PESSOAS.RELACAO_ID,
WENTMST_ID TYPE OF COLUMN PESSOAS.ENTMST_ID,
WSITUAC_ID TYPE OF COLUMN PESSOAS.SITUAC_ID,
WSINDICATO_ID TYPE OF COLUMN PESSOAS.SINDICATO_ID,
WILHA_ID TYPE OF COLUMN PESSOAS.ILHA_ID,
WNASC_RES TYPE OF COLUMN PESSOAS.NASC_RES,
WUSERID TYPE OF COLUMN PESSOAS.USERID,
WESTACAO TYPE OF COLUMN PESSOAS.ESTACAO,
WDATA TYPE OF COLUMN PESSOAS."DATA",
WHORA TYPE OF COLUMN PESSOAS.HORA,
WSITU TYPE OF COLUMN PESSOAS.SITU,
WACCAO TYPE OF COLUMN PESSOAS.ACCAO,
WDEPENDE_ID TYPE OF COLUMN PESSOAS.DEPENDE_ID,
WDD TYPE OF COLUMN PESSOAS.DD,
WCC TYPE OF COLUMN PESSOAS.CC,
WFF TYPE OF COLUMN PESSOAS.FF,
WDATA_C TYPE OF COLUMN PESSOAS.DATA_C,
WNOBI12 TYPE OF COLUMN PESSOAS.NOBI12,
WNACIONALIDADE TYPE OF COLUMN PESSOAS.NACIONALIDADE,
WNMPAI TYPE OF COLUMN PESSOAS.NMPAI,
WINDEVTPAI TYPE OF COLUMN PESSOAS.INDEVTPAI,
WNMMAE TYPE OF COLUMN PESSOAS.NMMAE,
WINDEVTMAE TYPE OF COLUMN PESSOAS.INDEVTMAE,
WNUTSNS TYPE OF COLUMN PESSOAS.NUTSNS,
WLOC_PEDIDO TYPE OF COLUMN PESSOAS.LOC_PEDIDO,
WVERSAOCARTAO TYPE OF COLUMN PESSOAS.VERSAOCARTAO,
WESTADOCARTAO TYPE OF COLUMN PESSOAS.ESTADOCARTAO,
WDATVALIDAD TYPE OF COLUMN PESSOAS.DATVALIDAD,
WALTURA TYPE OF COLUMN PESSOAS.ALTURA,
WDTHRPRT TYPE OF COLUMN PESSOAS.DTHRPRT,
WDHPRINT TYPE OF COLUMN PESSOAS.DHPRINT,
WCCUSTOS TYPE OF COLUMN PESSOAS.CCUSTOS,
WID_PES_LOC TYPE OF COLUMN PESSOAS.PESSOA_ID)
AS
DECLARE VARIABLE SDB VARCHAR(255);
DECLARE VARIABLE SSQL VARCHAR(25000);
DECLARE VARIABLE CONTA INTEGER;
DECLARE VARIABLE XSQLCODE INTEGER;
DECLARE VARIABLE XGDSCODE INTEGER;
DECLARE VARIABLE XSQLSTATE VARCHAR(100);
DECLARE VARIABLE SNOTE VARCHAR(100);
BEGIN
OUT_CONTA=3D1;
-- APLICA=C7=C3O EM PRODU=C7=C3O
sDB=3D'HostProducao.pt/3052:D:\Firebird\Fb30\Dados\GestACRA.FDB';
--' WHERE P.PESSOA_ID >=3D '||TRIM(CAST(:IN_ID AS VARCHAR(15)))||
-- sSql=3D
-- ' Select P.Pessoa_id, P.Nome, P.Apelido, S.NOSOC_ID, s.DATADM From
Pessoas P '||
-- ' Inner Join Socios S on S.Socios_ID=3DP.Pessoa_Id '||
-- ' Where S.NOSOC_ID >=3D '||TRIM(CAST( IN_ID AS VARCHAR(15)) ) ;
-- ' INNER JOIN SOCIOS S ON S.SOCIOS_ID=3DP.PESSOA_ID '|| NO.S1 --5513
ID-8526 ... 8751
sSql =3D TRIM(
' SELECT '||
' COALESCE(P.PESSOA_ID, 0) AS PESSOA_ID, '||
' COALESCE(P.TITULO_ID, 0) AS TITULO_ID, '||
' COALESCE(P.APELIDO, '''') AS APELIDO, '||
' COALESCE(P.NOME, ''SEM NOME'') AS NOME, '||
' COALESCE(P.TIPO_ID, '''') AS TIPO_ID, '||
' COALESCE(P.NOBI, '''') AS NOBI, '||
' COALESCE(P.ARQIDENT, '''') AS ARQIDENT, '||
' COALESCE(P.DATEMIBI, DATE ''1900-01-01'') as DATEMIBI, '||
' COALESCE(P.SEXO, '' '') AS SEXO, '||
' COALESCE(P.ESTCIVIL, '' '') AS ESTCIVIL, '||
' COALESCE(P.DAT_NASC, DATE ''1900-01-01'') as DAT_NASC, '||
' COALESCE(P.NIF, ''000000000'') AS NIF, '||
' COALESCE(P.RFEMIT_NIF, '''') AS RFEMIT_NIF, '||
' COALESCE(P.DATNIF, DATE ''1900-01-01'') as DATNIF, '||
' COALESCE(P.NOSEGSOCIAL, ''00000000000'') AS NOSEGSOCIAL, '||
' COALESCE(P.RFEMIT_SEGSOC, '''') AS RFEMIT_SEGSOC, '||
' COALESCE(P.DATSEGSOC, DATE ''1900-01-01'') as DATSEGSOC, '||
' COALESCE(P.CONCNASC_ID, 0) AS CONCNASC_ID, '||
' COALESCE(P.FREGNASC_ID, 0) AS FREGNASC_ID, '||
' COALESCE(P.PROFISSO_ID, 0) AS PROFISSO_ID, '||
' COALESCE(P.EMPRESA_ID, 0) AS EMPRESA_ID, '||
' COALESCE(P.RELACAO_ID, 0) AS RELACAO_ID, '||
' COALESCE(P.ENTMST_ID, 0) AS ENTMST_ID, '||
' COALESCE(P.SITUAC_ID, '' '') AS SITUAC_ID, '||
' COALESCE(P.SINDICATO_ID, 0) AS SINDICATO_ID, '||
' COALESCE(P.ILHA_ID, 0) AS ILHA_ID, '||
' COALESCE(P.NASC_RES, '' '') AS NASC_RES, '||
' COALESCE(P.USERID, '''') AS USERID, '||
' COALESCE(P.ESTACAO, '''') AS ESTACAO, '||
' COALESCE(P."DATA", DATE ''1900-01-01'') AS "DATA", '||
' COALESCE(P.HORA, TIME ''00:00:00'') AS HORA, '||
' COALESCE(P.SITU, '' '') AS SITU, '||
' COALESCE(P.ACCAO, ''000'') AS ACCAO, '||
' COALESCE(P.DEPENDE_ID, 0) AS DEPENDE_ID, '||
' COALESCE(P.DD, 0) AS DD, '||
' COALESCE(P.CC, 0) AS CC, '||
' COALESCE(P.FF, 0) AS FF, '||
' COALESCE(P.DATA_C, DATE ''1900-01-01'') AS DATA_C, '||
' COALESCE(P.NOBI12, '''') AS NOBI12, '||
' COALESCE(P.NACIONALIDADE, '''') AS NACIONALIDADE, '||
' COALESCE(P.NMPAI, '''') AS NMPAI, '||
' COALESCE(P.INDEVTPAI, '''') AS INDEVTPAI, '||
' COALESCE(P.NMMAE, '''') AS NMMAE, '||
' COALESCE(P.INDEVTMAE, '''') AS INDEVTMAE, '||
' COALESCE(P.NUTSNS, '''') AS NUTSNS, '||
' COALESCE(P.LOC_PEDIDO, '''') AS LOC_PEDIDO, '||
' COALESCE(P.VERSAOCARTAO, '''') AS VERSAOCARTAO, '||
' COALESCE(P.ESTADOCARTAO, '''') AS ESTADOCARTAO, '||
' COALESCE(P.DATVALIDAD, TIMESTAMP ''1900-01-01 00:00:00'') AS DATVALIDAD,
'||
' COALESCE(P.ALTURA, 0) AS ALTURA, '||
' COALESCE(P.DTHRPRT, '''') AS DTHRPRT, '||
' COALESCE(P.DHPRINT, TIMESTAMP ''1900-01-01 00:00:00'') AS DHPRINT, '||
' COALESCE(P.CCUSTOS, 0) AS CCUSTOS '||
' FROM PESSOAS P '||
' WHERE P.PESSOA_ID BETWEEN 8530 AND 8666 '||
' ORDER BY P.PESSOA_ID'
) ;
FOR
EXECUTE STATEMENT
( :sSql )
ON EXTERNAL DATA SOURCE :sDB
AS USER :IN_USER PASSWORD :IN_PWD -- just for example
WITH autonomous TRANSACTION -- note autonomous transaction
INTO
:wPESSOA_ID, :wTITULO_ID, :wAPELIDO, :wNOME, :wTIPO_ID, :wNOBI,
:wARQIDENT, :wDATEMIBI, :wSEXO,
:wESTCIVIL, :wDAT_NASC, :wNIF, :wRFEMIT_NIF, :wDATNIF,
:wNOSEGSOCIAL,:wRFEMIT_SEGSOC,
:wDATSEGSOC, :wCONCNASC_ID, :wFREGNASC_ID, :wPROFISSO_ID,
:wEMPRESA_ID, :wRELACAO_ID,
:wENTMST_ID, :wSITUAC_ID, :wSINDICATO_ID, :wILHA_ID, :wNASC_RES,
:wUSERID, :wESTACAO, :wDATA,
:wHORA, :wSITU, :wACCAO, :wDEPENDE_ID, :wDD, :wCC, :wFF, :wDATA_C,
:wNOBI12, :wNACIONALIDADE,
:wNMPAI, :wINDEVTPAI,:wNMMAE, :wINDEVTMAE, :wNUTSNS, :wLOC_PEDIDO,
:wVERSAOCARTAO, :wESTADOCARTAO,
:wDATVALIDAD, :wALTURA, :wDTHRPRT, :wDHPRINT, :wCCUSTOS
DO
BEGIN
--N=E3o insere repetidos
conta=3DROW_COUNT ;
OUT_NOME=3D:wNOME ;
OUT_APELIDO=3D:wAPELIDO;
OUT_ID =3D:wPessoa_id;
if (:wALTURA<>0) then
If (:wALTURA=3D0.02) then -- <=3D tem bug e n=E3o =E9 meu ALTURA=3D=
0.02 =E9 na
base local - sem falar que eu n=E3o estou consultando a base local S=F3 se
internamente o sistema faz isso, mas
-n=E3o =E9 percet=EDvel=
. Na
base EXTER=3D> wALTURA=3D1.52; --
:sDB=3D'HostProducao.pt/3052:D:\Firebird\Fb30\Dados\GestACRA.FDB';
EXECUTE PROCEDURE PESSOAS_INS_UPD(
:wPESSOA_ID,
:wTITULO_ID,
:wAPELIDO,
:wNOME,
:wTIPO_ID,
:wNOBI,
:wARQIDENT,
:wDATEMIBI,
:wSEXO,
:wESTCIVIL,
:wDAT_NASC,
:wNIF,
:wRFEMIT_NIF,
:wDATNIF,
:wNOSEGSOCIAL,
:wRFEMIT_SEGSOC,
:wDATSEGSOC,
:wCONCNASC_ID,
:wFREGNASC_ID,
:wPROFISSO_ID,
:wEMPRESA_ID,
:wRELACAO_ID,
:wENTMST_ID,
:wSITUAC_ID,
:wSINDICATO_ID,
:wILHA_ID,
:wNASC_RES,
:wUSERID,
:wESTACAO,
:wDATA,
:wHORA,
:wSITU,
:wACCAO,
:wDEPENDE_ID,
:wDD,
:wCC,
:wFF,
:wDATA_C,
:wNOBI12,
:wNACIONALIDADE,
:wNMPAI,
:wINDEVTPAI,
:wNMMAE,
:wINDEVTMAE,
:wNUTSNS,
:wLOC_PEDIDO,
:wVERSAOCARTAO,
:wESTADOCARTAO,
:wDATVALIDAD,
:wALTURA,
:wDTHRPRT,
:wDHPRINT,
:wCCUSTOS
) ;
OUT_CONTA=3D:OUT_CONTA + 1;
-- DO SUSPEND;
WHEN ANY DO
IN AUTONOMOUS TRANSACTION DO
BEGIN
xsqlcode=3DSQLCODE;
xgdscode=3DGDSCODE;
xSQLSTATE=3DSQLSTATE;
sNote=3D'Falha ao importar';
INSERT INTO IMPORT_ERROR_LOG (
SSOURCE_FILE,
PPK_SOURCE,
ISQLCODE,
IGDSCODE,
SSQLSTATE,
NOTE)
VALUES (
:SDB,
CAST(:wPESSOA_ID AS VARCHAR(50)),
:xSQLCODE,
:xGDSCODE,
:XSQLSTATE,
:sNOTE);
END
END
END;
Com os meus melhores cumprimentos
M=E1rio Agostinho Reis
919262146
Esta mensagem cont=E9m informa=E7=E3o de natureza confidencial e =E9
exclusivamente dirigida ao(s) destinat=E1rio(s) indicado(s). Se, por engano,
receber este email agradecemos que n=E3o o copie nem o reenvie e que nos
notifique do ocorrido atrav=E9s do email de resposta.
______________________________________________
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