FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como puedo actualizar una tabla con procedimientos
Tengo la siguiente consulta que debe actulizar una tabla después de haber ejecutado dos consultas posteriormente, la primera es para ubicar los campos que serán comparados con la segunda, y la segunda para hacer la actualización.
SET TERM ^; CREATE PROCEDURE ACTUA_ANEXO1 AS DECLARE VARIABLE COD_DANE VARCHAR(12); DECLARE VARIABLE COD_DANE2 VARCHAR(12); DECLARE VARIABLE JORNADA VARCHAR(1); BEGIN FOR SELECT CODIGO_DANE FROM TEMP_ANEXO1_1 INTO :COD_DANE DO BEGIN FOR SELECT I.INS_CODIGO, J.JOR_COD_R166 FROM INSTITUCION I, PERFIL_EDUCATIVO PE, GRADO_ESPECIALIDAD GE, GRUPO G, JORNADA J WHERE I.INS_CODIGO_DANE=:COD_DANE AND I.INS_ID=PE.INS_ID AND PE.PER_EDU_ID=GE.PER_EDU_ID AND GE.GRA_ESP_ID=G.GRA_ESP_ID AND G.JOR_ID=J.JOR_ID GROUP BY I.INS_CODIGO_DANE, J.JOR_COD_R166 INTO :COD_DANE2,:JORNADA DO IF(JORNADA='1')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_COMPLETA='S' WHERE CODIGO_DANE=:COD_DANE2 END IF(JORNADA='2')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_MANNANA='S' WHERE CODIGO_DANE=:COD_DANE2 END IF(JORNADA='3')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_TARDE='S' WHERE CODIGO_DANE=:COD_DANE2 END IF(JORNADA='4')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_NOCTURNA='S' WHERE CODIGO_DANE=:COD_DANE2 END IF(JORNADA='5')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_FINSEMANA='S' WHERE CODIGO_DANE=:COD_DANE2 END END END^ SET TERM;^ El error que me arroja es: "Dynamic SQL Error SQL error code = -104 Token unknown - line 24, char 9 END" Que estoy haciendo mal???, agradesco a quien me pueda ayudar |
#2
|
||||
|
||||
Hola,
Cita:
1. En tu mensaje: no utilizar la etiqueta CODE para formatear el código del procedimiento almacenado que has puesto y que así sea más fácil poder leerlo. Aquí tienes información sobre el tema: http://www.clubdelphi.com/foros/misc.php?do=bbcode#code 2. En cuanto al código, no estoy seguro (ya que ahora no puedo probarlo), pero creo que te faltan los ; (punto y coma) de cierre de sentencias. Cita:
|
#3
|
|||
|
|||
Gracias por la ayuda, aquí pongo el código como ejemplo para próximas dudas.
hacia falta un end y los ";" Nuevamente Gracias. SET TERM ^; CREATE PROCEDURE ACTUA_ANEXO1 AS DECLARE VARIABLE COD_DANE VARCHAR(12); DECLARE VARIABLE COD_DANE2 VARCHAR(12); DECLARE VARIABLE JORND VARCHAR(1); BEGIN FOR SELECT CODIGO_DANE FROM TEMP_ANEXO1_1 INTO :COD_DANE DO BEGIN FOR SELECT I.INS_CODIGO_DANE, J.JOR_COD_R166 FROM INSTITUCION I, PERFIL_EDUCATIVO PE, GRADO_ESPECIALIDAD GE, GRUPO G, JORNADA J WHERE I.INS_CODIGO_DANE=:COD_DANE AND I.INS_ID=PE.INS_ID AND PE.PER_EDU_ID=GE.PER_EDU_ID AND GE.GRA_ESP_ID=G.GRA_ESP_ID AND G.JOR_ID=J.JOR_ID GROUP BY I.INS_CODIGO_DANE, J.JOR_COD_R166 INTO :COD_DANE2,:JORND DO BEGIN IF(JORND='1')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_COMPLETA='S' WHERE CODIGO_DANE=:COD_DANE2; END IF(JORND='2')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_MANNANA='S' WHERE CODIGO_DANE=:COD_DANE2; END IF(JORND='3')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_TARDE='S' WHERE CODIGO_DANE=:COD_DANE2; END IF(JORND='4')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_NOCTURNA='S' WHERE CODIGO_DANE=:COD_DANE2; END IF(JORND='5')THEN BEGIN UPDATE TEMP_ANEXO1_1 SET JOR_FINSEMANA='S' WHERE CODIGO_DANE=:COD_DANE2; END END END SUSPEND; END^ SET TERM;^ Suerte!. |
#4
|
||||
|
||||
Hola,
Cita:
Saludos |
|
|
|