SQL Server - Problemas para realizar una comparacion en sql con procediento almacenado

 
Vista:
Imágen de perfil de DANIEL
Val: 6
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas para realizar una comparacion en sql con procediento almacenado

Publicado por DANIEL (4 intervenciones) el 07/02/2018 14:08:08
Buenas compañeros:

Les explico lo que deseo hacer haber si alquien sabe como hacerlo pq nunca he trabajado con procedimiento almacenado, tengo una tabla en sql que sellama Tbl_Reporte, donde tengo una columna que se llama Num_rep el cual es registrado desde un formulario de datos, el problema esta en que los reportes nunca se registran en orden y al sacar la estadistica del mes de enero por decir tengo 192 registros en la tabla pero hay algunos numeros de reportes que no estan registrados y debo sacar un informe que me diga cuales numeros de reportes faltan ejemplo el 20, 54, 78, 105, 189, etc, estube leyendo para hacer una tabla termporar con procedimiento alcenado pero no me sale pq nunca e trabajo con procedimiento almacenado, lo que quiero hacer es crear una tabla temporal con un consecutivo el cual pueda comnparar con mi tabla reporte para sacar los numeros de reportes faltantes.....me podrian ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas para realizar una comparacion en sql con procediento almacenado

Publicado por Isaias (4557 intervenciones) el 07/02/2018 17:26:02
Daniel

Es una declaracion de una variable, en este caso de tipo tabla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE @MyTableVar table(
    NumRep int NOT NULL)
DECLARE @Numerador int = 1
 
-- Lleno mi variable tabla
WHILE @Numerador  < 1001
 BEGIN
  INSERT INTO @MyTableVar
  VALUES (@Numerador)
  SET @Numerador = @Numerador + 1
  CONTINUE
 END
 
 SELECT * FROM @MyTableVar

En el ejemplo anterior, declaro mi variable de tipo tabla y la "relleno" con 1000 numeros, para posteriormente hacer un JOIN con la tabla Tbl_Reporte y de esa forma, obtener la informacion que necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de DANIEL
Val: 6
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas para realizar una comparacion en sql con procediento almacenado

Publicado por DANIEL (4 intervenciones) el 09/02/2018 13:39:19
Buenas compañero trate de hacer ese ejemplo peor me manda error eso lo debo colocar dentro de un procedimiento almacenado.

yo hice este ejemplo porque no conozco nada del tema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create procedure temporal
AS
 
SET NOCOUNT ON
 
CREATE table #tem(
dato nvarchar(30),
nombre nvarchar(30))
 
insert into #tem values ("daniel","prueba de esto", 18)
 
select * from #tem
 
 
SET NOCOUNT OFF
GO

trate de meter tu ejemplo y no me funciona no se que hago mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problemas para realizar una comparacion en sql con procediento almacenado

Publicado por Isaias (4557 intervenciones) el 09/02/2018 18:12:45
Compañero, siempre que nos diga "me manda un mensaje de error", diganos cual es el error, a algunos por aca se les da el dote de la adivinanza, a mi no mucho.

Su error es:

1
2
3
4
Msg 207, Level 16, State 1, Procedure temporal, Line 8 [Batch Start Line 0]
Invalid column name 'daniel'.
Msg 207, Level 16, State 1, Procedure temporal, Line 8 [Batch Start Line 0]
Invalid column name 'prueba de esto'.

El problema son las dobles comillas, debe colocar solo un tilde

1
insert into #tem values ('daniel','prueba de esto', 18)

Modificando esto, se creara el procedimento, el problema viene ahora cuando lo ejecute:
1
2
Msg 213, Level 16, State 1, Procedure temporal, Line 8 [Batch Start Line 14]
Column name or number of supplied values does not match table definition.

¿Porque si su tabla solo tiene DOS CAMPOS, usted intenta ingresar el dato 18?
1
2
3
CREATE table #tem(
dato nvarchar(30),
nombre nvarchar(30))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar