[Funcion sql] Problemas en la declaración

From: "Milton Galo Patricio" <minoztro(at)gmail(dot)com>
To: Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: [Funcion sql] Problemas en la declaración
Date: 2006-12-18 23:37:03
Message-ID: 172699c50612181537m7bcc37cbycf45dd0b1bea021c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimada lista:

Generalmente he confeccionado procedimientos almacenados en plpgsql,
plpythonu y nunca he tenido problemas, pero ahora me toca hacer una
funcion en sql y en realidad que estoy perdido y quizás estoy haciendo
las cosas mal.

En sql simple tengo que hacer lo siguiente:
CREATE TABLE cierre_turno_total (codigo_barra_producto,
cantidad_involucra, total_involucra, usuario_operacion) as select
codigo_barra_producto, sum(cantidad_involucra), sum(total_involucra),
'minostro' from involucra where codigo_operacion in (select
codigo_operacion from operacion where fecha_operacion='2006-12-17' and
nombre_operacion='venta' and usuario_operacion='minostro') and
estado_involucra='NO RESPALDADO' group by codigo_barra_producto;

CREATE TABLE cierre_turno_devolucion (codigo_barra_producto,
cantidad_involucra, total_involucra) as select codigo_barra_producto,
sum(cantidad_involucra), sum(total_involucra) from involucra where
codigo_operacion in (select codigo_operacion from operacion where
fecha_operacion='2006-12-17' and nombre_operacion='devolucion' and
usuario_operacion='minostro') and estado_involucra='NO RESPALDADO'
group by codigo_barra_producto;

update cierre_turno_total set
cantidad_involucra=cierre_turno_total.cantidad_involucra-cierre_turno_devolucion.cantidad_involucra,
total_involucra=cierre_turno_total.total_involucra-cierre_turno_devolucion.total_involucra
from cierre_turno_devolucion where
cierre_turno_total.codigo_barra_producto=cierre_turno_devolucion.codigo_barra_producto;

DROP TABLE cierre_turno_devolucion;

CREATE TABLE respaldo_operacion as select * from operacion where
fecha_operacion='2006-12-17';

CREATE TABLE respaldo_involucra as select * from involucra where
codigo_operacion in (select codigo_operacion from operacion where
fecha_operacion='2006-12-17') and usuario_involucra='minostro' and
estado_involucra='NO RESPALDADO';

Todo esto funciona bien, pero lo quiero meter a un procedimiento para
que solamente sea llamado cuando sea necesario....cuando defino la
función me tira errores en el update ya que me dice que la relación
cierra_turno_devolucion que utilizo no existe (la tablas que estoy
empleando las estoy creando en la misma función, ya que son tablas
temporales).

Entonces para que funcionara saque el update y me tiraba error en
que el tipo de retorno no era valido ya que yo le puse void y me decía
que le tenía que poner recordset, haciendole caso la funcion hace todo
lo que tiene que hacer pero falta que realice el update, como lo puedo
hacer, disculpen por extenderme tanto, salu2!

--
Milton Inostroza Aguilera

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-12-19 01:32:55 Re: Trigger INSERT _ UPDATE
Previous Message José Manuel Ruiz 2006-12-18 22:36:25 Re: Como abrir varios puertos para un servidor de postgresql