Buen día.
Necesito crear un campo en todas que no tengan un campo en concreto para ello
tengo 2 funciones, el problema se da es que la funcion
campo_check_fnc me devuelve también las vista y se produce un error.
Como puedo fitrar que solo me devuelva tablas.
CREATE OR REPLACE FUNCTION public.campo_check_fnc()
RETURNS void AS
$BODY$
DECLARE rs RECORD;
BEGIN
FOR rs IN
(
SELECT table_schema, table_name
FROM information_schema.columns
Where table_schema Not In ('pg_catalog', 'information_schema', 'public',
'prueba')
And table_schema || table_name Not IN
(Select t.table_schema || t.table_name
From
(
SELECT table_schema, table_name, column_name = 'mi_campo' As
existe_campo
FROM information_schema.columns
Where table_schema Not In ('pg_catalog', 'information_schema',
'public', 'prueba')
) t
Where t.existe_campo = TRUE
)
GROUP BY table_schema, table_name
ORDER BY table_schema, table_name ) LOOP
PERFORM * FROM public.campo_crea_fnc(rs.table_schema::VARCHAR,
rs.table_name::VARCHAR);
END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.migracion_campo_check_fnc()
OWNER TO postgres;
CREATE OR REPLACE FUNCTION public.campo_crea_fnc(
p_schema character varying,
p_tabla character varying)
RETURNS void AS
$BODY$
BEGIN
EXECUTE 'ALTER TABLE ' || p_schema || '.' || p_tabla || ' ADD COLUMN mi_campo
CHAR(2) DEFAULT ''NO''';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Saludos.
Mauricio
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda