![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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
|
|||
|
|||
![]() 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 |
![]() |
|
|
![]() |
|