Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2011, 18:29
pablo1416
 
Fecha de Ingreso: septiembre-2006
Mensajes: 8
Antigüedad: 17 años, 7 meses
Puntos: 0
Copiar un atributo de una tabla a otra

Hola a todos.

Tengo una tabla:
customers(customerid,companyname, ... country,countryID)
country(countryID,countryname)

countryID es clave foranea en customers y clave primaria en country.
Existe otra tabla countries en la base de datos por eso aparece un country en customers.

Puede parecer raro como esta definido pero es una practica.

Lo que quiero hacer es llenar la tabla country con los datos que hay en la tabla customers(country). Es decir pasar los paises de la tabla cliente a mi tabla recien creada country, automaticamente.

Hice una consulta en mi clase y me dijeron que podria usar cursores. Pero no entiendo la idea de cursores, esto fue lo que hice:

Código HTML:
CREATE OR REPLACE FUNCTION sp_test() RETURNS VOID AS
$BODY$
DECLARE
	custid varchar(5);
	fcompanyname varchar(40);
	fcontactname varchar(30);
	fcontacttitle varchar(30);
	faddress varchar(60);
	fcity varchar(15);
	fregion varchar(15);
	fcountry varchar(15);
	fphone varchar(24);
	ffax varchar(24);
	
	cursX CURSOR FOR SELECT * FROM customers;
BEGIN
OPEN cursX ;

	while found loop
		FETCH NEXT FROM cursX INTO custid,fcompanyname,fcontactname,fcontacttitle,faddress,fcity,fregion,fcountry,fphone,ffax;
		INSERT INTO country(countryname)
		VALUES (fcountry) ;
	end loop;
	
CLOSE cursX;

END;
$BODY$ 
LANGUAGE plpgsql;
¿En que me equivoco? o mejor aun ¿ Puedo hacer lo que me propongo de una manera mas simple ?

Gracias por responder