Declare @sqlcmd varchar(50)
@filas smallint
set @sqlcmd = 'select count(*) from mytabla'
exec @sqlcmd
como cargo a @filas el valor resultante de ejecutar @sqlcmd el cual me
devuelve un valor numerico?
Ojo que las sentencias que estoy planteando no es mi problema real, ya
que lo que realmente estoy obteniendo es la cantidad de registros de
todas las tablas de una base de datos, para lo cual uso un cursor para
barrer sysobjects para obtener cada nombre tabla y armar un query
dinamico, para obtener la cantidad de registros de cada tabla.
Saludos,
Juan Carlos
SELECT @sql =
N' SELECT @cnt = COUNT(*) FROM dbo.' + quotename(@tbl) +
N' WHERE LastUpdated BETWEEN @fromdate AND ' +
N' coalesce(@todate, ''99991231'')'
SELECT @params = N'@fromdate datetime, ' +
N'@todate datetime = NULL, ' +
N'@cnt int OUTPUT'
EXEC sp_executesql @sql, @params, '20060101', @cnt = @count OUTPUT
Aprenda los detalles en:
Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html
--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
Gracias.
On 28 ene, 11:31, Gux (MVP) <Gux...@discussions.microsoft.com> wrote:
> Este es un ejemplo del MVP Erland Sommarskog:
>
> SELECT @sql =
> N' SELECT @cnt = COUNT(*) FROM dbo.' + quotename(@tbl) +
> N' WHERE LastUpdated BETWEEN @fromdate AND ' +
> N' coalesce(@todate, ''99991231'')'
> SELECT @params = N'@fromdate datetime, ' +
> N'@todate datetime = NULL, ' +
> N'@cnt int OUTPUT'
> EXEC sp_executesql @sql, @params, '20060101', @cnt = @count OUTPUT
>
> Aprenda los detalles en:
>
> Las virtudes y maldades del SQL dinámicohttp://www.hayes.ch/sql/sql_dinamico.html
>
> --
> Gustavo Larriera, Microsoft MVPhttps://mvp.support.microsoft.com/profile/gux
> --
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Juan Carlos Mendoza" wrote:
> > Tengo un query dinamico mas o menos asi:
>
> > Declare @sqlcmd varchar(50)
> > @filas smallint
>
> > set @sqlcmd = 'select count(*) from mytabla'
> > exec @sqlcmd
>
> > como cargo a @filas el valor resultante de ejecutar @sqlcmd el cual me
> > devuelve un valor numerico?
>
> > Ojo que las sentencias que estoy planteando no es mi problema real, ya
> > que lo que realmente estoy obteniendo es la cantidad de registros de
> > todas las tablas de una base de datos, para lo cual uso un cursor para
> > barrer sysobjects para obtener cada nombre tabla y armar un query
> > dinamico, para obtener la cantidad de registros de cada tabla.
>
> > Saludos,
>
> > Juan Carlos- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -
DECLARE
@sql nvarchar(4000), -- nvarchar(MAX) en SQL 2005.
@col sysname,
@min varchar(20)
SELECT @col = N'au_fname'
SELECT @sql = N'SELECT @min = convert(varchar(20), MIN(' + @col +
N')) FROM authors'
EXEC sp_executesql @sql, N'@min varchar(20) OUTPUT', @min OUTPUT
SELECT @min
--
Gustavo Larriera, Microsoft MVP
Lei el articulo (muy bueno!) y modifique exitosamente las sentencias
que estaba preparando.
Saludos
Juan Carlos
On 28 ene, 11:57, Gux (MVP) <Gux...@discussions.microsoft.com> wrote:
> Otro ejemplo del mismo artículo :-)
>
> DECLARE
> @sql nvarchar(4000), -- nvarchar(MAX) en SQL 2005.
> @col sysname,
> @min varchar(20)
>
> SELECT @col = N'au_fname'
> SELECT @sql = N'SELECT @min = convert(varchar(20), MIN(' + @col +
> N')) FROM authors'
>
> EXEC sp_executesql @sql, N'@min varchar(20) OUTPUT', @min OUTPUT
>
> SELECT @min
>
> --
> > > - Mostrar texto de la cita -- Ocultar texto de la cita -