none
Insert con if en un procedimiento almacenado RRS feed

  • Pregunta

  • ALTER PROCEDURE [dbo].[SP_INSERTAR_MATRICULA]
    
    @Num_Matricula	int,	
    @Fecha	date,
    @Num_Estudiante	nvarchar(10),
    @Termino nvarchar(10),
    @Semestre int,
    @Candidato_Graduacion bit,
    @Fecha_Comienzo date,
    @Departamento int,
    @Curso int,
    @Fecha_Primer_Dia_Clases date,
    @Ultima_Asistencia date
    AS
    BEGIN
    INSERT INTO Matriculas_Tabla 
    VALUES
    (
    @Num_Matricula,	
    @Fecha,
    @Num_Estudiante,
    @Termino,
    @Semestre,
    @Candidato_Graduacion,
    @Fecha_Comienzo,
    @Departamento,
    @Curso,
    If @Fecha < @Fecha_Comienzo them
    @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo
    If  @Fecha > @Fecha_Comienzo and @Fecha_Comienzo = dia lunes them
    @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo + 1 osea dia martes
    @Ultima_Asistencia
     )	
    end

    Necesito hacer un procemiento almacenado inser utilizando if o case si fuera necesario, lo que no se es como aplicar el procedimiento utilizando los if de forma correcta para lo que quiero hacer en el ejemplo, gracias

    sábado, 12 de noviembre de 2016 20:38

Respuestas

  • Aunque no está muy claro lo que quieres, más o menos sería lago parecido a lo que te pongo debajo. Básicamente, en el campo de la INSERT en el que hay que grabar datos distintos dependiendo de una condición, se pone un CASE que tiene un WHEN por cada combinación que haya que probar. Al final se añade (opcionalmente) un ELSE, y hay que cerrarlo con END.
    INSERT INTO Matriculas_Tabla 
    VALUES
    (
    @Num_Matricula,	
    @Fecha,
    @Num_Estudiante,
    @Termino,
    @Semestre,
    @Candidato_Graduacion,
    @Fecha_Comienzo,
    @Departamento,
    @Curso,
    CASE
        WHEN @Fecha < @Fecha_Comienzo THEN @Fecha_Comienzo
        WHEN  @Fecha > @Fecha_Comienzo and DATEPART(dw,@Fecha_Comienzo) = 1 THEN  @Fecha_Comienzo + 1
        ELSE loquesea
        END,
    @Ultima_Asistencia
    )	
    

    • Marcado como respuesta Efrain Diaz domingo, 13 de noviembre de 2016 1:23
    sábado, 12 de noviembre de 2016 21:44