SQL - Filas afectadas por más de una consulta

 
Vista:

Filas afectadas por más de una consulta

Publicado por Pablo R (2 intervenciones) el 22/08/2013 04:03:02
Necesito realizar una aplicación para realizar una o varias consultas a más de una base.
Si ejecuto dos consultas al mismo tiempo el SELECT @@rowcount solo me devuelve la cantidad de filas afectas por la ultima consulta y no por las dos.
Les doy un ejemplo para que se entienda mejor:

SELECT TOP 1 * FROM nombreTabla
GO
SELECT TOP 1 * FROM nombreTabla WHERE 2=3

SELECT @@rowcount


El SELECT @@rowcount me devuelve 0 ya que la segunda consulta no afecto nigún registro
¿Hay alguna forma de obtener los registros afectados por las dos consultas. Estilo el message del Query anlizer o bien que regrese un valor único para las dos?
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 Islas Gonzalez
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Filas afectadas por más de una consulta

Publicado por Isaias Islas Gonzalez (1921 intervenciones) el 22/08/2013 18:37:47
Primero, deberias saber que todas las variables que empiezan con @@, son de sistema y no de usuario, por tanto, @@rowcount, solo guarda el total de filas afectadas por la ultima instruccion (delete, select, insert).

Para poder lograr lo que quieres, es tan simple hacer esto:

DECLARE @Count1 int
DECLARE @Count2 int

SELECT TOP 1 * FROM nombreTabla
SET @Count1 = @@rowcount
GO
SELECT TOP 1 * FROM nombreTabla WHERE 2=3
SET @Count2 = @@rowcount

SELECT @Count1, @Count2
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

Filas afectadas por más de una consulta

Publicado por Pablo R (2 intervenciones) el 23/08/2013 19:22:47
Isaias,
Gracias por el tiempo.
Lo que me comentas es correcto y es una posibilidad que había pensado ya.
Esta solución es extremadamente sencilla, pero no creo que me pueda servir mucho y te explico porque.
Tengo xxx bases seleccionadas y un cuadro donde el usuario ingresa las consultas(cantidad que quiera) .
El sistema me tiene que dar por cada base si afecto a o no algún registro.
Para aplicar la solución tendría dos posibilidades.
1. Manipular el contenido de la consulta que ingresa el usu para agregar la variable que acumule,
Esta opción la veo poco viable ya que tengo que determinar donde termina y comienza cada consulta
2. Obligar al usuario que agregue indique donde termina cada consulta con el GO o ;

¿Esto lo puedo hacer de alguna otra forma?
¿Se puede hacer con un trigger a @@rowcount que a medida que cambia lo pueda ir acumulando una variable aprte?
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 Islas Gonzalez
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Filas afectadas por más de una consulta

Publicado por Isaias Islas Gonzalez (1921 intervenciones) el 25/08/2013 00:10:55
No, ya que @@rowcount, al ser una variable del sistema, su contenido es "volátil", solo permanece al momento de la ejecución del query
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