Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Duvida Com Procedure


Posts Recomendados


  • Tópicos Que Criei:  12
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  39
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  327
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline

Pessoal bom dia

Estou co muma duvida na procedure abaixo, basicamente ela faz uma integração contábil, na verdade so quero fazer um depara, eu estou com uma maquina de testes mas nao estou conseguindo rodar essa procedure em ambiente local,somente no servidor, restaurei duas bases na mesma maquina, alguem poderia ajudar com relação a isso, como eu posso rodar ela usando outra base que esta em minha maquina local?

Obrigado.

Abaixo a procedure.

USE [TESTE_1]
GO
/****** Object:  StoredProcedure [dbo].[ZREPLICACAOCONTABIL]    Script Date: 06/02/2015 17:29:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
  
ALTER PROC [dbo].[ZREPLICACAOCONTABIL] @CODFILIAL VARCHAR(10)  
AS  
BEGIN  
  
DECLARE @BASE_ORIGEM VARCHAR(500), @BASE_DESTINO VARCHAR(500)  
DECLARE @SQL VARCHAR(MAX)  
DECLARE @CODCOLORIGEM VARCHAR(3), @CODCOLDESTINO VARCHAR(3)  
DECLARE @CODFILIALORIGEM VARCHAR(10), @CODFILIALDESTINO VARCHAR(10)  
  
  
SELECT @BASE_ORIGEM=SERVIDOR FROM ZCONFIG_REPLICACAO_CONTABIL WHERE CODFILIAL=@CODFILIAL;  


SET @BASE_DESTINO = DB_NAME () 
SET @CODCOLORIGEM=1  
SET @CODCOLDESTINO=1  


   IF 
      @CODFILIALORIGEM = '3598'
   SET 
      @CODFILIALDESTINO = '1110'  
   ELSE 
   SET 
      @CODFILIALORIGEM=@CODFILIAL  



SET @CODFILIALDESTINO=@CODFILIALORIGEM  
SET @SQL=''  
  
--LIMPAR LANCAMENTOS NO PERIODO SELECIONADO      
SET @SQL=@SQL + '  
  
--GERAR AS TABELAS TEMPORARIAS COM OS REGISTROS A SEREM COPIADOS DA BASE BR  
  
SELECT CODCOLIGADA, IDPARTIDA, IDLANCAMENTO, CODLOTE INTO #COPIAR FROM ' + @BASE_ORIGEM + '.DBO.CPARTIDA WHERE CODLOTE=0 AND CODCOLIGADA=' + @CODCOLORIGEM + ' AND CODFILIAL=' + @CODFILIALORIGEM + ';   

--CSDANT      
SELECT *
INTO #TMP_CSDANT
FROM ' + @BASE_ORIGEM + '.DBO.CSDANT BR (NOLOCK)
WHERE CODCOLIGADA=' + @CODCOLORIGEM + ' AND CODFILIAL=' + @CODFILIALORIGEM + ';
  
--CLANCAMENTO      
SELECT BR.*, BR.IDLANCAMENTO IDLANCAMENTO_ANTERIOR, ROW_NUMBER() OVER(ORDER BY BR.IDLANCAMENTO) LINHA      
INTO #TMP_CLANCAMENTO      
FROM ' + @BASE_ORIGEM + '.DBO.CLANCAMENTO BR (NOLOCK)      
INNER JOIN #COPIAR US (NOLOCK)      
ON    US.CODCOLIGADA=BR.CODCOLIGADA      
AND   US.IDLANCAMENTO=BR.IDLANCAMENTO      
GROUP BY BR.CODCOLIGADA, BR.CODLOTE, BR.IDLANCAMENTO, BR.DESCRICAO, BR.CODUSUARIO, BR.TIPOBLOQ, BR.RECCREATEDBY, BR.RECCREATEDON, BR.RECMODIFIEDBY, BR.RECMODIFIEDON, BR.IDLANCAMENTO      
ORDER BY BR.IDLANCAMENTO;  
-------------  
  
--CPARTIDA      
SELECT BR.*, BR.IDPARTIDA IDPARTIDA_ANTERIOR, BR.IDLANCAMENTO IDLANCAMENTO_ANTERIOR, ROW_NUMBER() OVER(ORDER BY BR.IDPARTIDA) LINHA      
INTO #TMP_CPARTIDA      
FROM  ' + @BASE_ORIGEM + '.DBO.CPARTIDA BR (NOLOCK)      
INNER JOIN #COPIAR US (NOLOCK)      
ON    US.CODCOLIGADA=BR.CODCOLIGADA      
AND   US.IDPARTIDA=BR.IDPARTIDA;    
UPDATE #TMP_CPARTIDA SET CODHISTP=''' + @CODFILIALORIGEM + ''' + CODHISTP WHERE CODHISTP NOT LIKE ''' + @CODFILIALORIGEM + '%'';    
----------      
      
--CRATEIOLC      
SELECT BR.*, BR.IDPARTIDA IDPARTIDA_ANTERIOR, BR.IDRATEIO IDRATEIO_ANTERIOR, ROW_NUMBER() OVER(ORDER BY BR.IDPARTIDA) LINHA      
INTO #TMP_CRATEIOLC      
FROM  ' + @BASE_ORIGEM + '.DBO.CRATEIOLC BR (NOLOCK)      
INNER JOIN #COPIAR US (NOLOCK)      
ON    US.CODCOLIGADA=BR.CODCOLIGADA      
AND   US.IDPARTIDA=BR.IDPARTIDA;          
----------      
                  
----INICIO DE VERIFICAÇÃO DE CADASTROS  
DELETE FROM ZTEMP_LOG_INTEGRACAOCONTABIL;  
INSERT INTO ZTEMP_LOG_INTEGRACAOCONTABIL (MENSAGEM, DETALHE)  
SELECT DISTINCT ''CENTRO DE CUSTO NÃO CADASTRADO'', O.CODCCUSTO FROM #TMP_CPARTIDA O  
LEFT JOIN ' + @BASE_DESTINO + '.DBO.GCCUSTO  
ON    GCCUSTO.CODCOLIGADA=O.CODCOLIGADA  
AND   GCCUSTO.CODCCUSTO=O.CODCCUSTO  
WHERE GCCUSTO.CODCCUSTO IS NULL  
UNION ALL  
SELECT DISTINCT ''CONTA CONTABIL NÃO CADASTRADA'', O.DEBITO FROM #TMP_CPARTIDA O  
LEFT JOIN ' + @BASE_DESTINO + '.DBO.CCONTA  
ON    CCONTA.CODCOLIGADA=O.CODCOLDEBITO  
AND   CCONTA.CODCONTA=O.DEBITO  
WHERE CCONTA.CODCONTA IS NULL  
AND   O.DEBITO IS NOT NULL  
UNION ALL  
SELECT DISTINCT ''CONTA CONTABIL NÃO CADASTRADA'', O.CREDITO FROM #TMP_CPARTIDA O  
LEFT JOIN ' + @BASE_DESTINO + '.DBO.CCONTA  
ON    CCONTA.CODCOLIGADA=O.CODCOLCREDITO  
AND   CCONTA.CODCONTA=O.CREDITO  
WHERE CCONTA.CODCONTA IS NULL  
AND   O.CREDITO IS NOT NULL  
UNION ALL  
SELECT DISTINCT ''CONTA CONTABIL NÃO CADASTRADA'', O.PARTIDA FROM #TMP_CPARTIDA O  
LEFT JOIN ' + @BASE_DESTINO + '.DBO.CCONTA  
ON    CCONTA.CODCOLIGADA=O.CODCOLPARTIDA  
AND   CCONTA.CODCONTA=O.PARTIDA  
WHERE CCONTA.CODCONTA IS NULL  
AND   O.PARTIDA IS NOT NULL;  
  
IF (SELECT COUNT(*) FROM ZTEMP_LOG_INTEGRACAOCONTABIL)<> 0  
BEGIN  
   
             exec  msdb.dbo.SP_SEND_dbMAIL   
                @profile_name =''Email SQL Server'',  
                @recipients='''',  
                @subject=''Falha na Integração Contábil Colégios - FILIAL=' +  @CODFILIALORIGEM + ''',  
                @body=''Segue abaixo:'',  
                @query=N''SELECT CONVERT(VARCHAR(10), DATAHORA, 103) + '''' '''' + CONVERT(VARCHAR(8), DATAHORA, 108) +  ''''  '''' + LEFT(MENSAGEM, 40) + '''' '''' + LEFT(DETALHE, 30) DETALHE FROM ZTEMP_LOG_INTEGRACAOCONTABIL'',  
                @query_result_header = 1,  
                @execute_query_database=''' + @BASE_DESTINO + '''  
   
 SELECT * FROM ZTEMP_LOG_INTEGRACAOCONTABIL;  
  
    RAISERROR (''PROBLEMA COM CADASTROS, A REPLICAÇÃO FOI ABORTADA.'',   
               16,   
               1   
               );  
END  
  
----FIM DE CADASTROS  
  
  
-----VERIFICAR SE FORAM COPIADOS PARA AS TABELAS TEMPORARIAS ANTES DE CONTINUAR COM A INTEGRAÇÃO E TAMBEM SE NÃO EXISTEM NENHUM PROBLEMA COM OS CADASTROS  
IF (SELECT COUNT(*) FROM #TMP_CLANCAMENTO)<> 0 AND (SELECT COUNT(*) FROM #TMP_CPARTIDA)<> 0 AND (SELECT COUNT(*) FROM ZTEMP_LOG_INTEGRACAOCONTABIL)= 0  
BEGIN  
  
---INICIO DE DELETE DAS TABELAS  
SELECT IDPARTIDA, IDLANCAMENTO INTO #DELETAR FROM ' + @BASE_DESTINO + '.DBO.CPARTIDA WHERE CODLOTE=0 AND CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODFILIAL=' + @CODFILIALDESTINO + ';   
  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CLCOMPL WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND IDPARTIDA IN (SELECT IDPARTIDA FROM #DELETAR);  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CRATEIOLC WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND IDPARTIDA IN (SELECT IDPARTIDA FROM #DELETAR);  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CCONT WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND IDPARTIDA IN (SELECT IDPARTIDA FROM #DELETAR);  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CPARTIDA WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND IDPARTIDA IN (SELECT IDPARTIDA FROM #DELETAR);  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CLANCAMENTO WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND IDLANCAMENTO IN (SELECT IDLANCAMENTO FROM #DELETAR);  
DELETE FROM ' + @BASE_DESTINO + '.DBO.CSDANT WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODFILIAL=' + @CODFILIALDESTINO + ';
---FIM DO DELETE  
  
  
---INICIO DE ACERTO DE IDS  
DECLARE @IDLANCAMENTO INT      
SELECT @IDLANCAMENTO=MAX(IDLANCAMENTO) FROM ' + @BASE_DESTINO + '.DBO.CLANCAMENTO (NOLOCK) WHERE CODCOLIGADA=' + @CODCOLDESTINO + ';          
UPDATE #TMP_CLANCAMENTO SET IDLANCAMENTO=@IDLANCAMENTO+LINHA, CODCOLIGADA=' + @CODCOLDESTINO + ';   
  
  
DECLARE @IDPARTIDA INT      
SELECT @IDPARTIDA=MAX(IDPARTIDA) FROM ' + @BASE_DESTINO + '.DBO.CPARTIDA (NOLOCK) WHERE CODCOLIGADA=' + @CODCOLDESTINO + ';      
DECLARE @LCTREF INT      
SELECT @LCTREF=MAX(LCTREF) FROM ' + @BASE_DESTINO + '.DBO.CPARTIDA (NOLOCK) WHERE CODCOLIGADA=' + @CODCOLDESTINO + ';      
UPDATE #TMP_CPARTIDA SET IDPARTIDA=@IDPARTIDA+LINHA, LCTREF=@LCTREF+LINHA, CODCOLIGADA=' + @CODCOLDESTINO + ', CODFILIAL=' + @CODFILIALDESTINO + ', INTEGRACHAVE=NULL, CODDEPARTAMENTO=NULL, INTEGRAAPLICACAO=''C'', LCTREFORIGEM=NULL;  
  
UPDATE #TMP_CPARTIDA      
SET IDLANCAMENTO=B.IDLANCAMENTO      
FROM #TMP_CPARTIDA      
INNER JOIN #TMP_CLANCAMENTO B      
ON    B.CODCOLIGADA=#TMP_CPARTIDA.CODCOLIGADA      
AND   B.IDLANCAMENTO_ANTERIOR=#TMP_CPARTIDA.IDLANCAMENTO;      
  
  
UPDATE #TMP_CRATEIOLC      
SET IDPARTIDA=B.IDPARTIDA      
FROM #TMP_CRATEIOLC      
INNER JOIN #TMP_CPARTIDA B      
ON    B.CODCOLIGADA=#TMP_CRATEIOLC.CODCOLIGADA      
AND   B.IDPARTIDA_ANTERIOR=#TMP_CRATEIOLC.IDPARTIDA;      
      
DECLARE @IDRATEIO INT      
SELECT @IDRATEIO=MAX(IDRATEIO) FROM ' + @BASE_DESTINO + '.DBO.CRATEIOLC (nolock) WHERE CODCOLIGADA=' + @CODCOLDESTINO + ';      
UPDATE #TMP_CRATEIOLC SET IDRATEIO=@IDRATEIO+LINHA, CODCOLIGADA=' + @CODCOLDESTINO + ';      
---FIM DE ACERTO DE IDS  
  
  
---INICIO DE INSERT  
   
SELECT * INTO #TMP_CHISTP FROM ' + @BASE_ORIGEM  + '.DBO.CHISTP WHERE CODCOLIGADA=' + @CODCOLORIGEM + ';  
UPDATE #TMP_CHISTP SET CODHISTP=''' + @CODFILIALORIGEM + ''' + CODHISTP WHERE CODHISTP NOT LIKE ''' + @CODFILIALORIGEM + '%'';    
  
INSERT INTO  ' + @BASE_DESTINO + '.dbo.CHISTP  
SELECT DISTINCT BR.CODCOLIGADA, BR.CODHISTP, BR.DESCRICAO, BR.COMPOBRIG, BR.COMPDESNEC, BR.HISTFECHA, BR.RECCREATEDBY, BR.RECCREATEDON, BR.RECMODIFIEDBY, BR.RECMODIFIEDON  
FROM #TMP_CHISTP BR  
INNER JOIN   
(  
 SELECT DISTINCT CODCOLIGADA, CODHISTP FROM #TMP_CPARTIDA WHERE CODHISTP NOT IN (SELECT CODHISTP FROM ' + @BASE_DESTINO + '.dbo.CHISTP WHERE CODCOLIGADA=' +  @CODCOLDESTINO + ') AND CODHISTP IS NOT NULL  
) US  
ON   US.CODCOLIGADA=BR.CODCOLIGADA  
AND  US.CODHISTP=BR.CODHISTP;  
  
INSERT INTO ' + @BASE_DESTINO + '.dbo.CSDANT
SELECT * FROM #TMP_CSDANT;
                      
DECLARE @MAX INT      
INSERT INTO ' + @BASE_DESTINO + '.dbo.CLANCAMENTO (CODCOLIGADA, CODLOTE, IDLANCAMENTO, DESCRICAO, CODUSUARIO, TIPOBLOQ, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON )      
SELECT CODCOLIGADA, CODLOTE, IDLANCAMENTO, DESCRICAO, CODUSUARIO, TIPOBLOQ, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON FROM #TMP_CLANCAMENTO;      
SET @MAX=-1      
SELECT @MAX=MAX(IDLANCAMENTO) FROM #TMP_CLANCAMENTO;      
UPDATE ' + @BASE_DESTINO + '.dbo.GAUTOINC SET VALAUTOINC=@MAX WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODAUTOINC=''IDLANCAMENTO'';      
      
INSERT INTO ' + @BASE_DESTINO + '.dbo.CPARTIDA (CODCOLIGADA, IDPARTIDA, CODLOTE, IDLANCAMENTO, LCTREF, CODLOTEORIGEM, CODFILIAL, CODDEPARTAMENTO, CODCCUSTO, DOCUMENTO, DATA, CODCOLDEBITO, DEBITO, CODCOLCREDITO, CREDITO, CODCOLPARTIDA, PARTIDA, VALOR, VALOR2, DATA2, CODHISTP, COMPLEMENTO, IDPARTICIPANTE, USUARIO, DATAINCLU, USUARIOALTER, DATAALTER, USUARIOINTEGRACAO, DATAINTEGRACAO, DATALIBERACAO, CODDIARIO, SEQDIARIO, INTEGRAAPLICACAO, INTEGRACHAVE, TIPOAGRUP, RATEIO, ORIGINADONOVOMOD, TIPOGERACAO, LCTREFORIGEM, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON)      
SELECT CODCOLIGADA, IDPARTIDA, CODLOTE, IDLANCAMENTO, LCTREF, CODLOTEORIGEM, CODFILIAL, CODDEPARTAMENTO, CODCCUSTO, DOCUMENTO, DATA, CODCOLDEBITO, DEBITO, CODCOLCREDITO, CREDITO, CODCOLPARTIDA, PARTIDA, VALOR, VALOR2, DATA2, CODHISTP, COMPLEMENTO, IDPARTICIPANTE, USUARIO, DATAINCLU, USUARIOALTER, DATAALTER, USUARIOINTEGRACAO, DATAINTEGRACAO, DATALIBERACAO, CODDIARIO, SEQDIARIO, INTEGRAAPLICACAO, INTEGRACHAVE, TIPOAGRUP, RATEIO, ORIGINADONOVOMOD, TIPOGERACAO, LCTREFORIGEM, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON FROM #TMP_CPARTIDA;      
SET @MAX=-1      
SELECT @MAX=MAX(IDPARTIDA) FROM #TMP_CPARTIDA;      
UPDATE ' + @BASE_DESTINO + '.dbo.GAUTOINC SET VALAUTOINC=@MAX WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODAUTOINC=''IDPARTIDA'';      
SET @MAX=-1      
SELECT @MAX=MAX(LCTREF) FROM #TMP_CPARTIDA;      
UPDATE ' + @BASE_DESTINO + '.dbo.GAUTOINC SET VALAUTOINC=@MAX WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODAUTOINC=''LCTREF0'';      
  
INSERT INTO ' + @BASE_DESTINO + '.dbo.CRATEIOLC (CODCOLIGADA, LCTREF, DATA, CODCONTA, CODGERENCIAL, VLRDEBITO, VLRCREDITO, CODCOLCONTA, CODCOLGERENCIAL, CODLOTE, IDRATEIO, IDPARTIDA, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON)      
SELECT CODCOLIGADA, LCTREF, DATA, CODCONTA, CODGERENCIAL, VLRDEBITO, VLRCREDITO, CODCOLCONTA, CODCOLGERENCIAL, CODLOTE, IDRATEIO, IDPARTIDA, RECCREATEDBY, RECCREATEDON, RECMODIFIEDBY, RECMODIFIEDON FROM #TMP_CRATEIOLC;      
SET @MAX=-1      
SELECT @MAX=MAX(IDRATEIO) FROM #TMP_CRATEIOLC;      
UPDATE ' + @BASE_DESTINO + '.dbo.GAUTOINC SET VALAUTOINC=@MAX WHERE CODCOLIGADA=' + @CODCOLDESTINO + ' AND CODAUTOINC=''IDRATEIO'';      
---FIM DO INSERT  
    
END  
'    
EXEC (@SQL)  
--PRINT @SQL  
END  
  
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  899
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.841
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.571
  • Conteúdo Resolvido:  0
  • Dias Ganho:  194
  • Status:  Online
  • Idade:  52
  • Dispositivo:  Windows

Mas qual erro retorna pra vc Diego? Vc não citou qual o problema, mais detalhado :)

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  12
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  39
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  327
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline

na verdade eu não estou conseguindo testar ele, nao sei porque, na verdade esta tudo ok so que nao consigo rodar puxando entre duas bases

Link para comentar
Compartilhar em outros sites

  • 1 mês depois...

  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  2
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  20
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

SET @BASE_DESTINO = SELECT DB_NAME() ;

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.