somar do retorno de uma stored procedure

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

contabil.png
Queria somar uma das colunas retornadas pela stored procedure.
Tem como?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

contabil.png
0.171 segundos
- Somar lançamentos, débitos e créditos
- Apurar lucro/prejuízo
- Atualizar contas sintéticas
São apenas perto de 1.000 lançamentos, mas vém prontinho do servidor.

Por enquanto debugando pra encontrar um cálculo errado. janeiro saiu ok mas fevereiro não.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

Pelo menos achei o motivo da diferença de valor.
Esqueci de configurar a conta de lucro/prejuízo, pra onde vai o resultado do fechamento.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

A procedure do balancete, por curiosidade.

Código: Selecionar todos

CREATE PROCEDURE ze_ContabilBalancete( dInicial DATE, dFinal DATE, nFechamento INT(11), nGrau INT(11 ) )

BEGIN

DECLARE dFechamento DATE;
DECLARE nAno, nMes, nFechaOficial INT(11);

SET nFechaOficial := ( SELECT GREATEST( COALESCE( EMFECHA, 12 ), 1 ) FROM JPEMPRESA WHERE IDEMPRESA = 1 );

SET nAno := YEAR( dInicial );

SET dFechamento := CONCAT( LPAD( nAno - 1, 4, '0' ), '-12-31' );
IF nFechamento != 12 THEN
   SET nMes := MONTH( dInicial );
   SET nMes := FLOOR( ( nMes - 1 ) / nFechaOficial ) * nFechaOficial;
   IF nMes <> 0 THEN
      SET dFechamento := CONCAT( LPAD( nAno, 4, '0' ), '-', LPAD( nMes, 2, '0' ), '-01' );
      SET dFechamento := LAST_DAY( dFechamento );
   END IF;
END IF;

SELECT
   JPCTCONTA.IDCTCONTA, JPCTCONTA.CPCODIGO, JPCTCONTA.CPGRAU, JPCTCONTA.CPTIPO, JPCTCONTA.CPGRUPO,
	JPCTCONTA.CPNOME, SUM( b.saldo ) AS anterior, SUM( b.deb ) as entrada, SUM( b.cred ) AS saida,
   nFechaOficial, nFechamento, dFechamento
FROM JPCTCONTA
LEFT JOIN
( SELECT A.CPCODIGO as analitica,
  ze_ContabilSaldoExercicio( A.IDCTCONTA, DATE( DATE_ADD( dInicial, INTERVAL -1 DAY ) ), dFechamento ) AS saldo,
  ze_ContabilSaldoDebito( A.IDCTCONTA, dInicial, dFinal ) AS deb,
  ze_ContabilSaldoCredito( A.IDCTCONTA, dInicial, dFinal ) AS cred
  FROM JPCTCONTA AS A
  WHERE A.CPTIPO = 'A'
) AS b ON TRIM( JPCTCONTA.CPCODIGO ) = SUBSTR( b.analitica, 1, LENGTH( TRIM( JPCTCONTA.CPCODIGO ) ) )
WHERE JPCTCONTA.CPGRAU <= nGrau
GROUP BY JPCTCONTA.IDCTCONTA
HAVING anterior != 0 OR entrada != 0 OR saida != 0
ORDER BY CPCODIGO;

END
que usa esta função:

Código: Selecionar todos

CREATE FUNCTION ze_ContabilSaldoDebito( nIdCtConta INT(11), dInicial DATE, dFinal DATE )
RETURNS DECIMAL(16,2)

BEGIN

DECLARE nSaldo DECIMAL(16,2);

SELECT COALESCE( SUM( CTVALOR ), 0 )
   FROM JPCONTABIL
   WHERE CTCTADEB = nIdCtConta
      AND DATE( CTDATA ) BETWEEN DATE( dInicial ) AND DATE( dFinal )
INTO nSaldo;

RETURN nSaldo;

END
e esta outra

Código: Selecionar todos

CREATE FUNCTION ze_ContabilSaldoCredito( nIdCtConta INT(11), dInicial DATE, dFinal DATE )
RETURNS DECIMAL(16,2)

BEGIN

DECLARE nSaldo DECIMAL(16,2);

SELECT COALESCE( SUM( CTVALOR ), 0 )
   FROM JPCONTABIL
   WHERE CTCTACRE = nIdCtConta
      AND DATE( CTDATA ) BETWEEN DATE( dInicial ) AND DATE( dFinal )
INTO nSaldo;

RETURN nSaldo;

END
As outras não vou mostrar.

E executa tudo em 0.171 segundos.
Não sei como o MySQL/MariaDB fazem, mas ..... é rápido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

Esqueci de dizer:

Estou tendo que terminar a contabilidade na marra.
Preciso do SPED Contábil funcionando, e ele precisa de tudo funcionando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

somar do retorno de uma stored procedure

Mensagem por JoséQuintas »

Precisava do que perguntei pra debugar as informações.
Mas resolvido: eu não tinha configurado a conta de lucro/prejuízo, e o cálculo ia para o espaço, gerando a diferença.

Acabei adicionando variáveis na resposta da stored procedure.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder