none
Sintaxis erronea para un insert en un Stored Procedure RRS feed

  • Pregunta

  • Hola comunidad!!!

    Estoy trantando de insertar un registro el cual me calcule e incremente en uno según el valor de una fecha. ejecutando esta instrucción en un sql server 2005 y me salen los siguientes errores:

    Mens 139, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 0
    No se puede asignar un valor predeterminado a una variable local.
    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 21
    Sintaxis incorrecta cerca de la palabra clave 'select'.
    Mens 137, Nivel 15, Estado 2, Procedimiento sp_Pacientes_Insert, Línea 21
    Debe declarar la variable escalar "@Fecha".
    Mens 137, Nivel 15, Estado 2, Procedimiento sp_Pacientes_Insert, Línea 40
    Debe declarar la variable escalar "@Fecha".
    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 46
    Sintaxis incorrecta cerca de la palabra clave 'else'.
    Mens 137, Nivel 15, Estado 2, Procedimiento sp_Pacientes_Insert, Línea 48
    Debe declarar la variable escalar "@Fecha".
    Mens 137, Nivel 15, Estado 2, Procedimiento sp_Pacientes_Insert, Línea 62
    Debe declarar la variable escalar "@Fecha".
    Mens 102, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 65
    Sintaxis incorrecta cerca de 'END'.

    El código es el siguiente:

    CREATE PROCEDURE [dbo].[sp_Pacientes_Insert]
     -- Add the parameters for the stored procedure here
     @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
     @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
     @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
     @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
     @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15),
     @Imagen image, @Observaciones nvarchar(max)
     
    AS
    DECLARE @Fecha Date=GetDate();
    if not exist (select count(*) from dbo.tblPacientes where FechaRegistro=@Fecha)
    BEGIN
     -- SET NOCOUNT ON added to prevent extra result sets from
     -- interfering with SELECT statements.
     SET NOCOUNT ON;

        -- Insert statements for procedure here
     INSERT INTO dbo.tblPacientes
     (
      Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion,
      NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector,
      IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
      FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
     )
     VALUES
     (
      @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
      @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
      @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
      @Fecha, @Usuario, @Imagen, @Observaciones, 1
     )
     --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
     return SCOPE_IDENTITY()
     --return @@identity
    END
    else
    declare @Cantidad int;
    set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where FechaRegistro=@Fecha);
    set @Cantidad=Cantidad+1;
     INSERT INTO dbo.tblPacientes
     (
      Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion,
      NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector,
      IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
      FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
     )
     VALUES
     (
      @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
      @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
      @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
      @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
     )
     return SCOPE_IDENTITY()
    END
    GO

    ¿Qué estaría haciendo mal?

    Gracias de antemano!!!

    Saludos!!


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 18:57

Respuestas

  • Te sobra un paréntesis

    ALTER PROCEDURE [dbo].[sp_Pacientes_Insert] 
      -- Add the parameters for the stored procedure here
      @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
      @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
      @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
      @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
      @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15), 
      @Imagen image, @Observaciones nvarchar(max)
     AS
     BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;
      
      DECLARE @Fecha DateTime
      SET @Fecha=GetDate();
      
      --If not exist (select count(*) from dbo.tblPacientes where  FechaRegistro=@Fecha)
      IF(SELECT COUNT(*) FROM dbo.tblPacientes WHERE CONVERT(NVARCHAR(10), FechaRegistro, 103)=CONVERT(nvarchar(10),@Fecha, 103))=0
    
     BEGIN
         -- Insert statements for procedure here
      INSERT INTO dbo.tblPacientes
      (
       Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
       NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
       IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
       FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
      )
      VALUES
      (
       @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
       @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
       @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
       @Fecha, @Usuario, @Imagen, @Observaciones, 1
      )
      --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
      return SCOPE_IDENTITY()
      --return @@identity
      END
     else
     BEGIN
     declare @Cantidad int;
     set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where CONVERT(nvarchar(10), FechaRegistro, 103)=CONVERT(nvarchar(10), @Fecha, 103));
     set @Cantidad=@Cantidad+1;
    
     INSERT INTO dbo.tblPacientes
      (
       Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
       NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
       IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
       FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
      )
      VALUES
      (
       @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
       @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
       @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
       @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
      )
      return SCOPE_IDENTITY()
      END
     END


    Harol Perez

    • Marcado como respuesta Paoli_vb jueves, 5 de septiembre de 2013 20:58
    jueves, 5 de septiembre de 2013 20:36

Todas las respuestas

  • Pruebalo de la siguiente manera

    CREATE PROCEDURE [dbo].[sp_Pacientes_Insert] 
      -- Add the parameters for the stored procedure here
      @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
      @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
      @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
      @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
      @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15), 
      @Imagen image, @Observaciones nvarchar(max)
      
     AS
     begin
     	  -- SET NOCOUNT ON added to prevent extra result sets from
    	  -- interfering with SELECT statements.
    	  SET NOCOUNT ON;
    
    	 DECLARE @Fecha Date
    	 set @Fecha=GetDate();
    
    	 if not exists(select count(*) from dbo.tblPacientes where  FechaRegistro=@Fecha)
    	 BEGIN
    		  INSERT INTO dbo.tblPacientes
    		  (
    		   Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    		   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    		   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    		   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
    		  )
    		  VALUES
    		  (
    		   @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    		   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    		   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    		   @Fecha, @Usuario, @Imagen, @Observaciones, 1
    		  )
    		  --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
    		  return SCOPE_IDENTITY()
    		  --return @@identity
    	 END
    	 else
    	 begin
    	 declare @Cantidad int;
    	 set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where  FechaRegistro=@Fecha);
    	 set @Cantidad=Cantidad+1;
    	  INSERT INTO dbo.tblPacientes
    	  (
    	   Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    	   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    	   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    	   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
    	  )
    	  VALUES
    	  (
    	   @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    	   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    	   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    	   @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
    	  )
    	  return SCOPE_IDENTITY()
    	ENd
    end
    GO


    Harol Perez

    jueves, 5 de septiembre de 2013 19:03
  • Hola Harol y gracias por tu respuesta!!!

    Te informo que se han corregido algunos errores y otros quedan. A continuación la lista de errores:

    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 28
    Sintaxis incorrecta cerca de la palabra clave 'select'.
    Mens 102, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 28
    Sintaxis incorrecta cerca de ')'.
    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 50
    Sintaxis incorrecta cerca de la palabra clave 'else'.
    Mens 102, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 70
    Sintaxis incorrecta cerca de 'END'.

    Gracias!!


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 19:19
  • Solo vi un nuevo error, prueba de nuevo y cuentas como te va

    CREATE PROCEDURE [dbo].[sp_Pacientes_Insert] 
      -- Add the parameters for the stored procedure here
      @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
      @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
      @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
      @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
      @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15), 
      @Imagen image, @Observaciones nvarchar(max)
      
     AS
     BEGIN
     	  -- SET NOCOUNT ON added to prevent extra result sets from
    	  -- interfering with SELECT statements.
    	  SET NOCOUNT ON;
    
    	 DECLARE @Fecha Date
    	 set @Fecha=GetDate();
    
    	 IF not exists(select COUNT(*) from dbo.tblPacientes where FechaRegistro=@Fecha)
    	 BEGIN
    		  INSERT INTO dbo.tblPacientes
    		  (Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    		   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    		   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    		   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia)
    		  VALUES
    		  (@Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    		   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    		   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    		   @Fecha, @Usuario, @Imagen, @Observaciones, 1)
    
    		  --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
    		  return SCOPE_IDENTITY()
    		  --return @@identity
    	 END
    	 ELSE
    	 BEGIN
    		 declare @Cantidad int;
    		 set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where  FechaRegistro=@Fecha);
    		 set @Cantidad= @Cantidad+1;
    
    		  INSERT INTO dbo.tblPacientes
    		  (
    		   Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    		   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    		   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    		   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
    		  )
    		  VALUES
    		  (
    		   @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    		   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    		   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    		   @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
    		  )
    		  return SCOPE_IDENTITY()
    	END
    END
    GO


    Harol Perez

    jueves, 5 de septiembre de 2013 19:25
  • Ahora se elimino uno más, el del END. los restantes son:


    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 29
    Sintaxis incorrecta cerca de la palabra clave 'select'.
    Mens 102, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 29
    Sintaxis incorrecta cerca de ')'.
    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 51
    Sintaxis incorrecta cerca de la palabra clave 'else'.


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 19:29
  • Tengo una duda, que quieres realizar en el primer IF, quieres ingresar cuándo sea igual a cero ? si es así prueba esto

    CREATE PROCEDURE [dbo].[sp_Pacientes_Insert] 
      -- Add the parameters for the stored procedure here
      @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
      @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
      @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
      @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
      @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15), 
      @Imagen image, @Observaciones nvarchar(max)
      
     AS
     BEGIN
     	  -- SET NOCOUNT ON added to prevent extra result sets from
    	  -- interfering with SELECT statements.
    	  SET NOCOUNT ON;
    
    	 DECLARE @Fecha Date
    	 set @Fecha=GetDate();
    
    	 IF (select COUNT(*) from dbo.tblPacientes where FechaRegistro=@Fecha) = 0
    	 BEGIN
    		  INSERT INTO dbo.tblPacientes
    		  (Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    		   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    		   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    		   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia)
    		  VALUES
    		  (@Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    		   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    		   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    		   @Fecha, @Usuario, @Imagen, @Observaciones, 1)
    
    		  --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
    		  return SCOPE_IDENTITY()
    		  --return @@identity
    	 END
    	 ELSE
    	 BEGIN
    		 declare @Cantidad int;
    		 set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where  FechaRegistro=@Fecha);
    		 set @Cantidad= @Cantidad+1;
    
    		  INSERT INTO dbo.tblPacientes
    		  (
    		   Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
    		   NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
    		   IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
    		   FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
    		  )
    		  VALUES
    		  (
    		   @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
    		   @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
    		   @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
    		   @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
    		  )
    		  return SCOPE_IDENTITY()
    	END
    END
    GO


    Harol Perez

    jueves, 5 de septiembre de 2013 19:33
  • Ya no salen errores. Voy a Probar insertando un registro.

    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 19:41
  • Todo va bien pero al parecer las fechas nunca coincidirán porque como el campo es DateTime, almacena la hora. entonces traté de castearlo pero no me funcionó. Por ejemplo:

    set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where  CAST(FechaRegistro AS DATE) = CAST(@Fecha AS DATE));

    La idea es convertirlo o extraer solo las fechas para que no incluya el tiempo y así pueda recuperar datos.

    ¿se podría declarar dos variables casteadas para luego pasarla a la select?



    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 20:05
  • Pero si pruebas de esta forma no te funciona?

    set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where  CONVERT(DATE, FechaRegistro) = CONVERT(DATE, @Fecha));


    Harol Perez

    jueves, 5 de septiembre de 2013 20:09
  • Salen los mismos mensajes como se muestran a continuación:

    Mens 243, Nivel 16, Estado 1, Procedimiento sp_Pacientes_Insert, Lnea 30

    DATE no es un tipo de sistema definido.

    Mens 243, Nivel 16, Estado 1, Procedimiento sp_Pacientes_Insert, Lnea 30

    DATE no es un tipo de sistema definido.

    Mens 243, Nivel 16, Estado 1, Procedimiento sp_Pacientes_Insert, Lnea 55

    DATE no es un tipo de sistema definido.

    Mens 243, Nivel 16, Estado 1, Procedimiento sp_Pacientes_Insert, Lnea 55

    DATE no es un tipo de sistema definido.


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 20:16
  • set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes  where  CONVERT(NVARCHAR(10),   FechaRegistro, 103) = CONVERT(NVARCHAR(10), @Fecha, 103));

    No me acordaba de la versión de sql que tenias entonces prueba de la siguiente forma


    Harol Perez

    jueves, 5 de septiembre de 2013 20:19
  • Ahora sale este:

    Mens 4145, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 28
    Se especificó una expresión no booleana en un contexto donde se esperaba una condición, cerca de ')'.
    Mens 156, Nivel 15, Estado 1, Procedimiento sp_Pacientes_Insert, Línea 50
    Sintaxis incorrecta cerca de la palabra clave 'else'.


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 20:27
  • Coloca el procedimiento tal cual lo tienes en este momento para mirar que pasa.


    Harol Perez

    jueves, 5 de septiembre de 2013 20:31
  • Ahí va:

    ALTER PROCEDURE [dbo].[sp_Pacientes_Insert]
     -- Add the parameters for the stored procedure here
     @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
     @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
     @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
     @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
     @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15),
     @Imagen image, @Observaciones nvarchar(max)
    AS
    BEGIN
     -- SET NOCOUNT ON added to prevent extra result sets from
     -- interfering with SELECT statements.
     SET NOCOUNT ON;
     
     DECLARE @Fecha DateTime
     SET @Fecha=GetDate();
     
     --If not exist (select count(*) from dbo.tblPacientes where FechaRegistro=@Fecha)
     IF(SELECT COUNT(*) FROM dbo.tblPacientes WHERE CONVERT(NVARCHAR(10), FechaRegistro, 103)=CONVERT(nvarchar(10),@Fecha, 103)))=0

     BEGIN
        -- Insert statements for procedure here
     INSERT INTO dbo.tblPacientes
     (
      Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion,
      NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector,
      IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
      FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
     )
     VALUES
     (
      @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
      @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
      @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
      @Fecha, @Usuario, @Imagen, @Observaciones, 1
     )
     --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
     return SCOPE_IDENTITY()
     --return @@identity
     END
    else
    BEGIN
    declare @Cantidad int;
    set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where CONVERT(nvarchar(10), FechaRegistro, 103)=CONVERT(nvarchar(10), @Fecha, 103));
    set @Cantidad=@Cantidad+1;

     INSERT INTO dbo.tblPacientes
     (
      Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion,
      NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector,
      IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
      FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
     )
     VALUES
     (
      @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
      @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
      @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
      @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
     )
     return SCOPE_IDENTITY()
     END
    END


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 20:33
  • Te sobra un paréntesis

    ALTER PROCEDURE [dbo].[sp_Pacientes_Insert] 
      -- Add the parameters for the stored procedure here
      @Nombres varchar(50), @Apellidos varchar(50), @FechaNacimiento datetime,
      @IdSexo int, @IdTipoIdentificacion int, @NumIdentificacion varchar(15),
      @IdNacionalidad int, @DireccionResidencial varchar(60), @Sector varchar(30),
      @IdProvincia int, @IdPais int, @IdArs int, @NumAfiliado varchar(20),
      @TelResidencial nchar(11), @TelCelular nchar(11), @Usuario varchar(15), 
      @Imagen image, @Observaciones nvarchar(max)
     AS
     BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;
      
      DECLARE @Fecha DateTime
      SET @Fecha=GetDate();
      
      --If not exist (select count(*) from dbo.tblPacientes where  FechaRegistro=@Fecha)
      IF(SELECT COUNT(*) FROM dbo.tblPacientes WHERE CONVERT(NVARCHAR(10), FechaRegistro, 103)=CONVERT(nvarchar(10),@Fecha, 103))=0
    
     BEGIN
         -- Insert statements for procedure here
      INSERT INTO dbo.tblPacientes
      (
       Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
       NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
       IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
       FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
      )
      VALUES
      (
       @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
       @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
       @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
       @Fecha, @Usuario, @Imagen, @Observaciones, 1
      )
      --SELECT SCOPE_IDENTITY() AS [SCOPE IDENTITY]
      return SCOPE_IDENTITY()
      --return @@identity
      END
     else
     BEGIN
     declare @Cantidad int;
     set @Cantidad = (Select COUNT(FechaRegistro) from dbo.tblPacientes where CONVERT(nvarchar(10), FechaRegistro, 103)=CONVERT(nvarchar(10), @Fecha, 103));
     set @Cantidad=@Cantidad+1;
    
     INSERT INTO dbo.tblPacientes
      (
       Nombres, Apellidos, FechaNacimiento, IdSexo, IdTipoIdentificacion, 
       NumIdentificacion, IdNacionalidad, DireccionResidencial, Sector, 
       IdProvincia, IdPais, IdArs, NumAfiliado, TelResidencial, TelCelular,
       FechaRegistro, Usuario, Imagen, Observaciones, Secuencia
      )
      VALUES
      (
       @Nombres, @Apellidos, @FechaNacimiento, @IdSexo, @IdTipoIdentificacion,
       @NumIdentificacion, @IdNacionalidad, @DireccionResidencial, @Sector,
       @IdProvincia, @IdPais, @IdArs, @NumAfiliado, @TelResidencial, @TelCelular,
       @Fecha, @Usuario, @Imagen, @Observaciones, @Cantidad
      )
      return SCOPE_IDENTITY()
      END
     END


    Harol Perez

    • Marcado como respuesta Paoli_vb jueves, 5 de septiembre de 2013 20:58
    jueves, 5 de septiembre de 2013 20:36
  • Efectivamente, era el paréntesis. Todo funciona correctamente!!! Gracias por tu valiosa ayuda!!!

    Podemos cerrar el hilo.


    Quien no conoce el pasado está condenado a repetirlo. Napoleón Bonaparte

    jueves, 5 de septiembre de 2013 20:57