Recuperar valor de consulta SQL

Iniciado por Shell Root, 27 Febrero 2010, 06:29 AM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

Bueno, en vista de que retome mi profesion de Desarrollador de Software, cosa que no retomaba desde hace más de 4 ó 5 meses, se me olvido realizar esto en SQL.

Supongamos que tenemos esta consulta.
Código (sql) [Seleccionar]
SELECT COUNT(intIDUsuario) FROM dbo.tblReservas WHERE (intIDUsuario = '1') AND (Estado = 'Activo')

Ahora quiero que en una variable dentro del SQL, recuperar el valor que dá el resultado de la consulta anterior. Tengo que usar Cursores?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

^Tifa^

No del todo, porque fijate que estas utilizando COUNT que retorna 1 solo valor entero acorde a la cantidad de registros que encuentres  ;)  esto cabe perfectamente en 1 sola variable dentro del motor solo declara la variable previamente y haz tu consulta:

Código (sql) [Seleccionar]

SELECT COUNT(intIDUsuario) INTO @variable FROM dbo.tblReservas WHERE (intIDUsuario = '1') AND (Estado = 'Activo'


Luego ya sabes haces un SELECT @variable para ver la info retornada.

Los cursores lo usaras cuando requieras obtener como respuesta mas de 1 registro, digase que quisieras obtener todos los nombres de los usuarios que ingresaron a un colegio en el año 2008 por ejemplo, aca sabes que si dices SELECT NOMBRES el te retornara mas de 1 valor, distribuido en distintos campos, entonces ahi si necesitas cursores. Pero en tu caso al utilizar la funcion COUNT estas sumando todos los registros encontrados, para al final retorna 1 solo valor que es la suma de lo encontrado  ;)

Saludo.

Shell Root

#2
Es correcto hacer esto?
Código (sql) [Seleccionar]
DECLARE @variable As INT
SELECT COUNT(intIdTipoUsuario) INTO @variable FROM tblTipoUsuario
PRINT @variable

Porque me dá error en la segunda linea (Sintaxis incorrecta cerca de '@variable')




Ok. Y si el campo no fuese un INT sino un String (Varchar). Por ejemplo:
Código (sql) [Seleccionar]
SELECT strTipoUsuario FROM tblTipoUsuario WHERE (intIdTipoUsuario = 1)
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

^Tifa^

Que motor es???? porque eso de declare variable as tal cosa suena a Oracle....

En MySQL es mas sencillo, ni tienes que declarar previamente la variable, bastaria con:

SELECT COUNT(campo) INTO @variable1 FROM TABLA WHERE CAMPO = ALGO

luego

SELECT @variable1

Shell Root

#4
Microsoft SQL Server 2008, me olvidaba, estoy con Store Procedure
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

^Tifa^

No utilizo SQL Server. Pero buscando por ahi en internet una instruccion similar:

http://www.eggheadcafe.com/software/aspnet/30322497/store-count-into-a-variab.aspx

Haber si te sirve  :P

Shell Root

Simon, eso era lo que necesitaba.  :-*

Código (sql) [Seleccionar]
DECLARE @intCount int
SET @intCount= (SELECT COUNT(intIdTipoUsuario) FROM tblTipoUsuario)
PRINT @intCount

Resultado:
3


Código (sql) [Seleccionar]
DECLARE @srtTipoUsuario AS VARCHAR(50)
SET @srtTipoUsuario = (SELECT strTipoUsuario FROM tblTipoUsuario WHERE (intIdTipoUsuario = 1))
PRINT @srtTipoUsuario

Resultado:
Administrador
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

^Tifa^

Bueno siempre es buscarle la vuelta al asunto

Un besito para mi  :D

Grax.

[ Alberto]

puedes meterlo tambien en la consulta

DECLARE @intCount int
SELECT @intCount = COUNT(intIdTipoUsuario) FROM tblTipoUsuario
Debemos de hacer todas las cosas sencillas, excepto las cosas sencillas