Guest User

Untitled

a guest
Jan 22nd, 2018
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. --Crear el campo Acciones de tratamiento de tratamiento a nivel de control para los sdr(#FS5336)(Jorge)
  2. CREATE OR REPLACE FUNCTION crear_campoacciones()
  3. RETURNS void AS
  4. $BODY$
  5. --Función para crear el campo adicional en contrloes "Acciones de tratamiento"
  6. --@author Jorge Ivan Franco Hoyos <jorgeun@gmail.com>
  7. --@fecha Sep 22 de 2011
  8.  
  9. DECLARE
  10. --cursor con los sistemas de referencia existentes
  11. curSdR CURSOR FOR
  12. SELECT fldsistemariesgo_id
  13. FROM tblsistemariesgo;
  14.  
  15. --cursor con los controles que tienen algun texto en el campo fldriesgocontrol_acciones
  16. curcontroles CURSOR FOR
  17. SELECT c.*
  18. FROM tblriesgocontrol c WHERE c.fldriesgo_id IS NOT NULL AND c.fldriesgocontrol_acciones IS NOT NULL OR c.fldriesgocontrol_acciones!='';
  19.  
  20. sistemariesgoid INTEGER;
  21. campoadicionalid INTEGER;
  22. control tblriesgocontrol%ROWTYPE;
  23.  
  24. BEGIN
  25.  
  26. --Se crean el campo adicional para cada sistema de referencia existente.
  27. OPEN curSdR;
  28. LOOP
  29. FETCH curSdR INTO sistemariesgoid;
  30. EXIT WHEN NOT FOUND;
  31.  
  32. INSERT INTO tblcampoadicional (fldcampoadicional_nombre,fldcampoadicional_codigo,fldcampoadicional_padre,fldcampoadicional_padre_id) VALUES ('Acciones de tratamiento','1','riesgoControl',sistemariesgoid);
  33.  
  34. RAISE NOTICE '-----se agrega el campo adicional Acciones de tratamiento al SdR % -----',sistemariesgoid;
  35.  
  36. END LOOP;
  37. CLOSE curSdR;
  38.  
  39. --Se migran los datos del campo fldriesgocontrol_acciones al nuevo campo adicional
  40. OPEN curcontroles;
  41. LOOP
  42. FETCH curcontroles INTO control;
  43. EXIT WHEN NOT FOUND;
  44.  
  45. --Se obtiene el sistema de referencia al cual pertenece el control
  46. SELECT s.fldsistemariesgo_id INTO sistemariesgoid FROM tblriesgo r
  47. INNER JOIN tblsistemariesgo s ON s.fldsistemariesgo_id = r.fldsistemariesgo_id
  48. WHERE r.fldriesgo_id=control.fldriesgo_id LIMIT 1;
  49.  
  50. --Se obtiene el id del campo adicional
  51. SELECT fldcampoadicional_id INTO campoadicionalid FROM tblcampoadicional WHERE fldcampoadicional_nombre='Acciones de tratamiento' AND fldcampoadicional_padre='riesgoControl' AND fldcampoadicional_padre_id=sistemariesgoid;
  52.  
  53. --Se migra el valor la tabla tblcampovlr_riesgocontrol
  54. INSERT INTO tblcampovlr_riesgocontrol (fldcampoadicional_id,fldcampovlr_tipo_vlr,fldcampovlr_tipo_claseid) VALUES (campoadicionalid,control.fldriesgocontrol_acciones,control.fldriesgocontrol_id);
  55.  
  56.  
  57. END LOOP;
  58. CLOSE curcontroles;
  59.  
  60.  
  61. END;$BODY$
  62. LANGUAGE 'plpgsql' VOLATILE;
  63. ALTER FUNCTION crear_campoacciones() OWNER TO sig;
  64.  
  65.  
  66. --CORRER Y ELIMINAR PROCEDIMIENTO
  67. SELECT * FROM crear_campoacciones();
  68. DROP FUNCTION crear_campoacciones();
  69.  
  70. --Eliminar la columna fldriesgocontrol_acciones de riesgocontrol (#FS)(Jorge)
  71. ALTER TABLE tblriesgocontrol DROP COLUMN fldriesgocontrol_acciones;
Add Comment
Please, Sign In to add comment