[firebase-br] AS USER :IN_USER PASSWORD :IN_PWD -- just for example WITH autonomous TRANSACTION -- note autonomous transaction
Mário Reis
mariodosreyx em gmail.com
Quinta Outubro 2 16:48:54 -03 2025
Gladiston,
Esta construção é de Confiança?!
A ideia é trazer da base de produção os dados atuais e passá-los para uma
base noa que estou migrando.
Ora abaixo o Valor que está voltandoa da base externa(produção)
Pessoas.Altura é '0.02' mas na verdade nesta base de migração que
exite esse valor em altura na base de produção o valor em consulta direta é
1.72 ou 1.51 ou 1.55, 1.52
Assim não dá para confiar assim há alguma outra forma de resolver isto as
dua tabelas são PESSOAS então em memória confunde-se só poderá ser 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=1;
-- APLICAÇÃO EM PRODUÇÃO
sDB='HostProducao.pt/3052:D:\Firebird\Fb30\Dados\GestACRA.FDB';
--' WHERE P.PESSOA_ID >= '||TRIM(CAST(:IN_ID AS VARCHAR(15)))||
-- sSql=
-- ' Select P.Pessoa_id, P.Nome, P.Apelido, S.NOSOC_ID, s.DATADM From
Pessoas P '||
-- ' Inner Join Socios S on S.Socios_ID=P.Pessoa_Id '||
-- ' Where S.NOSOC_ID >= '||TRIM(CAST( IN_ID AS VARCHAR(15)) ) ;
-- ' INNER JOIN SOCIOS S ON S.SOCIOS_ID=P.PESSOA_ID '|| NO.S1 --5513
ID-8526 ... 8751
sSql = 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ão insere repetidos
conta=ROW_COUNT ;
OUT_NOME=:wNOME ;
OUT_APELIDO=:wAPELIDO;
OUT_ID =:wPessoa_id;
if (:wALTURA<>0) then
If (:wALTURA=0.02) then -- <= tem bug e não é meu ALTURA=0.02 é na
base local - sem falar que eu não estou consultando a base local Só se
internamente o sistema faz isso, mas
-não é percetível. Na
base EXTER=> wALTURA=1.52; --
:sDB='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=:OUT_CONTA + 1;
-- DO SUSPEND;
WHEN ANY DO
IN AUTONOMOUS TRANSACTION DO
BEGIN
xsqlcode=SQLCODE;
xgdscode=GDSCODE;
xSQLSTATE=SQLSTATE;
sNote='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á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