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.
|