
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
al compilar sale bien pero al llamar la funcion me con
me aparece el siguiente error
como será que puedo solucionar?
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


0