PostgreSQL - error del desbordamiento numeric

 
Vista:
sin imagen de perfil

error del desbordamiento numeric

Publicado por cesar (1 intervención) el 25/06/2015 02:30:13
Hola a todos, resulta que tengo un simple error , el codigo esta todo bien asi les paso como hice sobre funcion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-- Function: produccion.f_actualizacion_ventas(numeric, numeric, character varying)
 
-- DROP FUNCTION produccion.f_actualizacion_ventas(numeric, numeric, character varying);
 
CREATE OR REPLACE FUNCTION produccion.f_cuentas_padre()
  RETURNS boolean AS
$BODY$
declare
	r1 record;
	r2 record;
	vl_total_debe numeric;
	vl_total_haber numeric;
	funciona boolean;
 
begin
	vl_total_debe = 0;
	vl_total_haber = 0;
 
	for r1 in SELECT distinct codigo_cta FROM produccion.b_cuentas where codigo_cta is not null order by codigo_cta loop
		for r2 in SELECT  total_debe, total_haber FROM produccion.b_cuentas loop
			vl_total_debe = vl_total_debe + r2.total_debe;
			vl_total_haber = vl_total_haber + r2.total_haber;
			funciona = false;
		end loop;
		UPDATE produccion.b_cuentas
	        SET total_debe = vl_total_debe, total_haber = vl_total_haber
		WHERE cta_superior = r1.codigo_cta;
		funciona=true;
	end loop;
 
return funciona;
end$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

al compilar sale bien pero al llamar la funcion me con

1
SELECT produccion.f_cuentas_padre();

me aparece el siguiente error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ERROR:  desbordamiento de campo numeric
DETAIL:  Un campo con precisión 15, escala 0 debe redondear a un valor absoluto menor que 10^15.
CONTEXT:  sentencia SQL: «UPDATE produccion.b_cuentas
	        SET total_debe = vl_total_debe, total_haber = vl_total_haber
		WHERE cta_superior = r1.codigo_cta»
función PL/pgSQL produccion.f_cuentas_padre() en la línea 19 en sentencia SQL
********** Error **********
 
ERROR: desbordamiento de campo numeric
SQL state: 22003
Detail: Un campo con precisión 15, escala 0 debe redondear a un valor absoluto menor que 10^15.
Context: sentencia SQL: «UPDATE produccion.b_cuentas
	        SET total_debe = vl_total_debe, total_haber = vl_total_haber
		WHERE cta_superior = r1.codigo_cta»
función PL/pgSQL produccion.f_cuentas_padre() en la línea 19 en sentencia SQL

como será que puedo solucionar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder