Problema con Funcion de insercion en multiples tablas

From: "Juan Manuel Fernandez" <jmfernandez(at)unlu(dot)edu(dot)ar>
To: "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Problema con Funcion de insercion en multiples tablas
Date: 2008-05-17 00:08:12
Message-ID: 27f3c8cd0805161708p31f4c858hf81976c5cfdc5231@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas Noches Lista!!!
Tengo el siguiente problema, tengo una funcion (en realidad deseo
tenerla) que lo que debe hacer es:

* Insertar parte de los datos que son pasados como parametro en una Tabla.
* En base a parte de estos datos, seleccionar datos de otra tabla para
insertarlos junto con otros pasados como parametro en una tercera
tabla...

La idea de la funcion es la siguiente:

CREATE OR REPLACE FUNCTION AGREGAR_DISPOSICION( disposicion TEXT,
anio_menor INT,
anio_mayor INT,
name TEXT,
archivo BYTEA,
tipe TEXT,
size FLOAT,
asignatura INT,
carrera INT,
tipo TEXT) RETURNS VOID AS
$$
DECLARE
existe TEXT;
planes CURSOR FOR SELECT codigo_plan WHERE codigo_asignatura =
asignatura AND codigo_carrera = carrera ORDER BY codigo_plan ASC;

BEGIN
IF anio_menor > anio_mayor THEN
RAISE EXCEPTION 'ERROR: El año de inicio debe ser mayor que el de fin!';
ELSE
SELECT nro_disposicion INTO existe FROM T_PROGRAMAS;
IF existe IS NULL THEN
INSERT INTO T_PROGRAMAS VALUES(nro_disposicion, name, archivo,
tipe, size, current_date, tipo);
END IF;

SELECT codigo_plan INTO planes FROM
T_ASIGNATURAS_X_PLAN WHERE codigo_carrera = carrera AND
codigo_asignatura = asignatura;

// Aca esta el dilema! Como hago para que el
programa se inserte en todos los planes coincidentes???

INSERT INTO T_PROGRAMAS_X_ASIGNATURA VALUES (disposicion, :planes,
carrera, asignatura, anio_menor, anio_mayor);

END IF;
END;
$$ language 'plpgsql';

Yo entiendo que en la variable planes va a quedar solo el ultimo plan
coincidente, el tema es que deseo insertarlo en todos los que lo
sean...

Como puedo hacerlo? Creo que una alternativa seria un cursor, pero
jamas use uno....

Si me ayudan me sacarían de un enorme bache, un problema con el que
lidie todo el día...

Muchas gracias,

Juan

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Angel . 2008-05-17 00:11:50 RE: Postgres se pasma!!
Previous Message marcelo Cortez 2008-05-16 20:40:01 Re: Comparison of Microsoft SQL Server 2005, MySQL 5, and PostgreSQL 8.3