Error "temporary" is not a known variable. al crear funcion con Select * INTO TEMPORARY tarifa_rs From t

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: Postgres ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Error "temporary" is not a known variable. al crear funcion con Select * INTO TEMPORARY tarifa_rs From t
Date: 2015-09-23 21:53:45
Message-ID: 158420043.61722.1443045225293.JavaMail.yahoo@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buen día 

Necesito crear una función que recibe 2 string con formato json,al compilar me da el error "temporary" is not a known variable.
El código es el siguiente:
CREATE OR REPLACE FUNCTION prb.listado_fn(In w_cab_json varchar, In w_det_json varchar)RETURNS TABLE (tarea NUMERIC, operacion VARCHAR, observacion VARCHAR, centro VARCHAR, proceso VARCHAR, dpto VARCHAR,                seccion VARCHAR, articulo VARCHAR, unidad VARCHAR)AS$BODY$ BEGIN
DROP TABLE IF EXISTS tarifa_rs;
With tAS (Select j.tarea, j.operacion, j.observacion, j.ms_oper, j.mo_tasa, j.gf_porcentaje, j.gf_tasa,        sum(j.ms_oper) over (PARTITION BY j.tarea) as ms_tar,        CASE j.un When 'Uno' Then 1 When 'Cien' Then 100 When 'Mil'  Then 1000 END :: NUMERIC(4, 0) As factorFrom json_populate_recordset(null::prb.tarifa_detalle_type, w_det_json) j)Select t.tarea, t.operacion, t.observacion, t.ms_oper, t.mo_tasa, t.gf_porcentaje, t.gf_tasa, t.ms_tar,        row_number() Over(PARTITION By t.tarea ORDER BY t.operacion desc) As rn,        Round( (((t.mo_tasa /60) * (t.ms_tar / t.factor)) + ((((t.mo_tasa /60) * (t.ms_tar / t.factor)) * (t.gf_porcentaje / 100)) + t.gf_tasa)), 3) As costo_total        INTO TEMPORARY tarifa_rsFrom t;
Update tarifa_rs    Set ms_tar = 0, costo_total = 0  Where tarifa_rs.rn > 1;
RETURN Query Select d.tarea, d.operacion, d.observacion, d.centro, d.proceso, c.dpto, c.seccion, c.articulo, c.unidad From tarifa_rs d CROSS JOIN (Select *From json_populate_record(null::prb.tarifa_cabecera_type, w_cab_json::json)) cORDER BY d.tarea, d.operacion;
DROP TABLE IF EXISTS tarifa_rs;
END;$BODY$  LANGUAGE plpgsql VOLATILE  COST 100  ROWS 1000;
Cuando corro el código sin crear la función, todo funciona bien, crea la tabla temporal y me devuelve los resultados que espero, pero si intento hacer la funcion tengo el error, si comento  INTO TEMPORARY tarifa_rs compila sin problemas
Como puedo corregir el problema para crear la función.Hay alguna diferencia importante en el perform o consumo de recursos al hacer unRETURNS TABLE (tarea NUMERIC, operacion VARCHAR, observacion VARCHAR) en lugar de dimencionar los camposRETURNS TABLE (tarea NUMERIC(12,2), operacion VARCHAR(6), observacion VARCHAR(100))

Saludos.Mauricio

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2015-09-23 22:00:32 Re: Error "temporary" is not a known variable. al crear funcion con Select * INTO TEMPORARY tarifa_rs From t
Previous Message Alvaro Herrera 2015-09-22 18:04:34 Re: capturar valores de campos en variables usando consulta espacial