Hace poco necesite realizar un select que por lógica solo devolvería siempre un solo registro con varis columnas, debía capturar estas y realizar una serie de operaciones con las variables pues bueno esto no es tan fácil como pensamos quiero pasarles el código para realizar esta operación y además el link de donde lo saque espero les sirva:
DECLARE
@reserved INT,
@rowcnt INT,
@used INT
SET @reserved = -1
SET @rowcnt = -1
SET @used = -1
;WITH x AS
(
SELECT
reserved,
rowcnt,
used,
COUNT(*) OVER(PARTITION BY 1) AS theCount
FROM sysobjects so
INNER JOIN sysindexes si ON si.id = so.id
WHERE
so.name = 'sysrowsets'
)
SELECT
@reserved = reserved,
@rowcnt = rowcnt,
@used = used
FROM x
WHERE theCount =
(
SELECT
number
FROM master..spt_values
WHERE
TYPE = 'p'
AND number BETWEEN 1 AND theCount
)
SELECT @reserved, @rowcnt, @used
Agradecimeintos a: Camilo Jaramillo
Acá encontré una forma más sencilla:
http://blog.jmacoe.com/gestion_ti/base_de_datos/cuando-utilizar-set-vs-select-al-asignar-valores-a-las-variables-en-sql-server/
Reblogueó esto en .: TomiStyle :.y comentado:
Articulo muy útil para los que buscan una solución rápida sin leer mucho.