Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Crear el campo Acciones de tratamiento de tratamiento a nivel de control para los sdr(#FS5336)(Jorge)
- CREATE OR REPLACE FUNCTION crear_campoacciones()
- RETURNS void AS
- $BODY$
- --Función para crear el campo adicional en contrloes "Acciones de tratamiento"
- --@author Jorge Ivan Franco Hoyos <jorgeun@gmail.com>
- --@fecha Sep 22 de 2011
- DECLARE
- --cursor con los sistemas de referencia existentes
- curSdR CURSOR FOR
- SELECT fldsistemariesgo_id
- FROM tblsistemariesgo;
- --cursor con los controles que tienen algun texto en el campo fldriesgocontrol_acciones
- curcontroles CURSOR FOR
- SELECT c.*
- FROM tblriesgocontrol c WHERE c.fldriesgo_id IS NOT NULL AND c.fldriesgocontrol_acciones IS NOT NULL OR c.fldriesgocontrol_acciones!='';
- sistemariesgoid INTEGER;
- campoadicionalid INTEGER;
- control tblriesgocontrol%ROWTYPE;
- BEGIN
- --Se crean el campo adicional para cada sistema de referencia existente.
- OPEN curSdR;
- LOOP
- FETCH curSdR INTO sistemariesgoid;
- EXIT WHEN NOT FOUND;
- INSERT INTO tblcampoadicional (fldcampoadicional_nombre,fldcampoadicional_codigo,fldcampoadicional_padre,fldcampoadicional_padre_id) VALUES ('Acciones de tratamiento','1','riesgoControl',sistemariesgoid);
- RAISE NOTICE '-----se agrega el campo adicional Acciones de tratamiento al SdR % -----',sistemariesgoid;
- END LOOP;
- CLOSE curSdR;
- --Se migran los datos del campo fldriesgocontrol_acciones al nuevo campo adicional
- OPEN curcontroles;
- LOOP
- FETCH curcontroles INTO control;
- EXIT WHEN NOT FOUND;
- --Se obtiene el sistema de referencia al cual pertenece el control
- SELECT s.fldsistemariesgo_id INTO sistemariesgoid FROM tblriesgo r
- INNER JOIN tblsistemariesgo s ON s.fldsistemariesgo_id = r.fldsistemariesgo_id
- WHERE r.fldriesgo_id=control.fldriesgo_id LIMIT 1;
- --Se obtiene el id del campo adicional
- SELECT fldcampoadicional_id INTO campoadicionalid FROM tblcampoadicional WHERE fldcampoadicional_nombre='Acciones de tratamiento' AND fldcampoadicional_padre='riesgoControl' AND fldcampoadicional_padre_id=sistemariesgoid;
- --Se migra el valor la tabla tblcampovlr_riesgocontrol
- INSERT INTO tblcampovlr_riesgocontrol (fldcampoadicional_id,fldcampovlr_tipo_vlr,fldcampovlr_tipo_claseid) VALUES (campoadicionalid,control.fldriesgocontrol_acciones,control.fldriesgocontrol_id);
- END LOOP;
- CLOSE curcontroles;
- END;$BODY$
- LANGUAGE 'plpgsql' VOLATILE;
- ALTER FUNCTION crear_campoacciones() OWNER TO sig;
- --CORRER Y ELIMINAR PROCEDIMIENTO
- SELECT * FROM crear_campoacciones();
- DROP FUNCTION crear_campoacciones();
- --Eliminar la columna fldriesgocontrol_acciones de riesgocontrol (#FS)(Jorge)
- ALTER TABLE tblriesgocontrol DROP COLUMN fldriesgocontrol_acciones;
Add Comment
Please, Sign In to add comment