Ver Mensaje Individual
  #1  
Antiguo 22-02-2010
María Belén María Belén is offline
Registrado
 
Registrado: feb 2010
Posts: 1
Reputación: 0
María Belén Va por buen camino
If dentro de un store procedure con DB2

Hola que tal necesito que me ayuden, es que tengo un store procedure que tiene un if para 3 diferentes casos, uno para cuando el nummateria=1, cuando el nummateria=2 y cuando nummateria=3, ayuda contesten por favor es urgente, trate con case pero tampoco me deja

Este es el código que uso
ALTER PROCEDURE [espol].[SP_APRORESOL_ING]
@idPeriodo as int,
@idPrograma as int,
@nummaterias as int,@minnota as decimal(5,2)
AS


If (@nummaterias = 1)
Begin--actualizando los estados de las materias
Begin
UPDATE espol.TBL_CURSO_PERSONA
SET cp.estado ='AC'
FROM espol.TBL_CURSO_PERSONA CP
INNER JOIN ESPOL.TBL_INSCRIPCION I
ON CP.idpersonaprograma = I.idpersonaprograma
and cp.idperiodo = i.idperiodo
INNER JOIN espol.V_CUADRO_FINAL V
ON (i.IDINSCRIPCION = V.IDINSCRIPCION AND CP.IDMATERIA = V.IDMATERIAM1 AND I.IDPROGRAMA = V.IDPROGRAMA AND I.IDPERIODO = V.IDPERIODO)
WHERE V.IDPERIODO = @idPeriodo AND
V.IDPROGRAMA = @idPrograma AND
V.NUMMAT = 1
AND (V.M1NOTA >=@minnota AND V.M1NOTA < 6)

End --Carreras de dos materia se aprueba con un promedio min pero solo cuando ya han aprobado una materia

If (@nummaterias = 2)
Begin
Begin
UPDATE espol.TBL_CURSO_PERSONA
SET cp.estado ='AC'
FROM espol.TBL_CURSO_PERSONA CP
INNER JOIN ESPOL.TBL_INSCRIPCION I
ON CP.idpersonaprograma = I.idpersonaprograma
and cp.idperiodo = I.idperiodo
INNER JOIN espol.V_CUADRO_FINAL V
ON (I.IDINSCRIPCION = V.IDINSCRIPCION
AND CP.IDMATERIA = V.IDMATERIAM2
AND I.IDPROGRAMA = V.IDPROGRAMA
AND I.IDPERIODO = V.IDPERIODO)
WHERE V.IDPERIODO = @idPeriodo
AND V.IDPROGRAMA=@idPrograma
AND V.NUMMAT = 2 AND
V.M1NOTA >= 6
AND (V.M2NOTA >=@minnota AND V.M2NOTA < 6)

--AND COALESCE(APRB_X_RESOLUCION, 'N') = 'N'
--Carreras de tres materia se aprueba con un promedio min pero solo cuando ya han aprobado dos materias
If (@nummaterias = 3)
Begin
Begin
UPDATE espol.TBL_CURSO_PERSONA
SET cp.estado='AC'
FROM
espol.TBL_CURSO_PERSONA CP
INNER JOIN ESPOL.TBL_INSCRIPCION I
ON CP.idpersonaprograma = I.idpersonaprograma
and cp.idperiodo = i.idperiodo
INNER JOIN espol.V_CUADRO_FINAL V
ON (I.IDINSCRIPCION = V.IDINSCRIPCION
AND CP.IDMATERIA = V.IDMATERIAM1
AND I.IDPROGRAMA = V.IDPROGRAMA
AND I.IDPERIODO = V.IDPERIODO)
WHERE V.IDPERIODO=@idPeriodo
AND V.IDPROGRAMA=@idPrograma
AND V.NUMMAT = 3
AND V.M2NOTA >= 6
AND V.M3NOTA >= 6
AND (V.M1NOTA >=@minnota AND V.M1NOTA < 6) --AND COALESCE(APRB_X_RESOLUCION, 'N') = 'N'
UPDATE espol.TBL_CURSO_PERSONA
SET cp.estado ='AC' FROM espol.TBL_CURSO_PERSONA CP
INNER JOIN ESPOL.TBL_INSCRIPCION I
ON CP.idpersonaprograma = I.idpersonaprograma
and cp.idperiodo = i.idperiodo
INNER JOIN espol.V_CUADRO_FINAL V
ON (I.IDINSCRIPCION = V.IDINSCRIPCION AND CP.IDMATERIA = V.IDMATERIAM2 AND I.IDPROGRAMA = V.IDPROGRAMA AND I.IDPERIODO = V.IDPERIODO)
WHERE
V.IDPERIODO=@idPeriodo AND
V.IDPROGRAMA=@idPrograma AND
V.NUMMAT = 3
AND V.M1NOTA >= 6 AND V.M3NOTA >= 6
AND (V.M2NOTA >=@minnota AND V.M2NOTA < 6)


End End

Última edición por María Belén fecha: 22-02-2010 a las 16:58:45.
Responder Con Cita