Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: d91 en 12 Diciembre 2015, 13:43 pm



Título: ayuda con cursor implicito en sql server
Publicado por: d91 en 12 Diciembre 2015, 13:43 pm
hola a todos, estoy iniciando ahora con sql server y necesito hacer un procedimiento almacenado que cuente el total de las filas de una tabla, pero según he leído en sql server no contamos con los cursores implícitos:
Código
  1. SELECT COUNT(*) INTO contador FROM empleados;
  2.  
y no se como se haría con los explicitos, porque de estar vacia la tabla no se realiza ningún movimiento en el contador y de existir filas solo haría una instrucción de count(*)
Código
  1. DECLARE @var INT
  2. DECLARE contador cursor FOR
  3. SELECT COUNT(No_empleado) FROM empleado
  4.  
  5. BEGIN
  6. OPEN contador
  7. fetch contador INTO @var
  8.  print @var
  9. END
  10.  
  11.  
tampoco existe un tipo de dato igual a las  filas y sus columnas resultantes del cursor
cont contador%rowtype, sino que debo de declarar cada una de las columnas posibles que devolvera



Título: Re: ayuda con cursor implicito en sql server
Publicado por: d91 en 12 Diciembre 2015, 15:29 pm
avance un poco mas, ahora necesito llamar a este procedimiento desde .NET y que el select sea el segundo cursor....
Código
  1. DECLARE @var INT
  2. DECLARE @var2 INT
  3. DECLARE c_contador cursor FOR
  4. SELECT COUNT(Codigo_empleado) FROM EMPLEADO
  5.  
  6. DECLARE c_ultimo cursor FOR
  7. SELECT MAX(Codigo_empleado) FROM EMPLEADO
  8.  
  9. BEGIN
  10. SET @var = 0
  11. OPEN c_contador
  12. fetch NEXT FROM c_contador INTO @var
  13. --while (@@FETCH_STATUS = 0)
  14. --BEGIN
  15.    --print @var
  16. --FETCH next from contador into @var
  17. --END
  18. CLOSE c_contador
  19. DEALLOCATE c_contador
  20. IF @var != 0
  21.  -- print @var
  22.  BEGIN
  23.   OPEN c_ultimo
  24.      fetch NEXT FROM c_ultimo INTO @var2
  25.      print @var2
  26.    close c_ultimo
  27.   deallocate c_ultimo
  28.  END
  29. ELSE
  30.    BEGIN
  31.       SET @var = -1
  32.       print @var
  33.    END
  34. END
  35.  
  36.  
  37.