Dudas Cursor en Postgresql
Publicado por yesid (4 intervenciones) el 14/12/2018 18:12:19
Hola amigos, tengo un problema que no he podido resolver, tengo una tabla historica de ventas, que se llama fact_ventasplu, cree una tabla nueva vacias, quiero que el cursor me inserte solo los registros que doy como rango, mes y años, pero me esta saliendo un error al tratar de grabar la function, y no he podido encontrar el error.
[Err] ERROR: row "contenido" has no field "fecha"
CONTEXT: compilation of PL/pgSQL function "sp_prueba" near line 32
copio la function:
[Err] ERROR: row "contenido" has no field "fecha"
CONTEXT: compilation of PL/pgSQL function "sp_prueba" near line 32
copio la function:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
DROP FUNCTION IF EXISTS sp_prueba();
CREATE OR REPLACE FUNCTION sp_prueba(Mes varchar(10), year_1 INTEGER,year_2 INTEGER) RETURNS VOID AS
$OpCur$
DECLARE
OperCursor CURSOR FOR SELECT to_timestamp(dt.fecha, 'DD/MM/YYYY ') as fecha,
hr.rango as hora,
fv.numtransaccion,
fv.pos::INT,sk.codplu as idCodplu,
sk.plu as nomplu,sk.nivel1,
sk.negocio,sk.nivel2,
sk.categoria,
sk.nivel3,sk.subcategoria,un.codsubdivision as codtienda,
un.subdivision as tienda,
un.division,gf.pais,gf.departamento,gf.ciudad,rs.codresponsable as codvende,rs.responsable,rs.tiporesponsable,rs.cargo,
sum(fv.unidadesplu) as sales_qty,
sum(fv.valorventaxplusiniva) as sales_siva,
sum(fv.valorventaxpluconiva) sales_civa, sum(fv.costoxplu) as sales_costo,
sum(fv.valorventaxplusiniva-fv.costoxplu) as contribu
FROM fact_ventasplu fv
inner join dim_unidadnegocio du on fv.idunidadnegocio = du.idunidadnegocio
Inner join dim_tiempo dt on fv.idtiempo = dt.idtiempo
inner join dim_plu sk on fv.idplu=sk.idplu
inner join dim_unidadnegocio un on fv.idunidadnegocio=un.idunidadnegocio
inner JOIN dim_geografia gf on fv.idgeografia=gf.idgeografia
inner join dim_cliente cl on fv.idcliente =cl.idcliente
inner join dim_responsable rs on fv.idresponsable = rs.idresponsable
inner join dim_hora hr on fv.idhora=hr.idhora
WHERE dt.mes in (Mes) and dt.anocal in ( year_1,year_2 )
GROUP BY dt.fecha,hr.rango,fv.numtransaccion,fv.pos,sk.codplu,sk.plu,
sk.nivel1,sk.negocio,sk.nivel2,sk.categoria,sk.nivel3,sk.subcategoria,
un.codsubdivision,un.subdivision,un.division,
gf.pais,gf.departamento,gf.ciudad,rs.codresponsable,
rs.responsable,rs.tiporesponsable,rs.cargo;
-- enviamos el resultado a la variable contenido
Contenido fact_ventasplu %ROWTYPE;
BEGIN
OPEN OperCursor;
LOOP
FETCH OperCursor INTO Contenido;
IF NOT FOUND THEN
EXIT;
END IF;
INSERT INTO sales_actual( fecha,hora,numtransaccion, pos,idcodplu,nomplu,nivel1,negocio ,
nivel2 , categoria, nivel3 , subcategoria, codtienda , tienda , division, pais , departamento, ciudad ,
codvende, responsable, tiporesponsable, cargo , sales_qty , sales_siva , sales_civa, sales_costo,
contribu)
VALUES (Contenido.fecha,Contenido.hora, Contenido.numtransaccion,
Contenido.pos,Contenido.idCodplu,Contenido.nomplu,Contenido.nivel1,Contenido.negocio,Contenido.nivel2,
Contenido.categoria,Contenido.nivel3,Contenido.subcategoria,Contenido.codtienda,Contenido.tienda,
Contenido.division,Contenido.pais,Contenido.departamento,Contenido.ciudad,Contenido.codvende,Contenido.responsable,Contenido.tiporesponsable,Contenido.cargo,Contenido.sales_qty, Contenido.sales_siva, Contenido.sales_civa,Contenido.sales_costo, Contenido.contribu );
END LOOP;
CLOSE OperCursor;
END;
$OpCur$
LANGUAGE 'plpgsql'
Valora esta pregunta


0