sql 2000: Guardar resultado de query dinamico

28/01/2008 - 17:15 por Juan Carlos Mendoza | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
28/01/2008 - 17:31 | Informe spam
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á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.



"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

Respuesta Responder a este mensaje
#2 Juan Carlos Mendoza
28/01/2008 - 17:48 | Informe spam
plantee el query y previo Declare respectivo, me sale el error que
"must declare @cnt" donde @cnt esta dentro del @sql como un
texto. leere el link sugerido.

Gracias.

On 28 ene, 11:31, Gux (MVP) 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 -
Respuesta Responder a este mensaje
#3 Gux (MVP)
28/01/2008 - 17:57 | Informe spam
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

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Juan Carlos Mendoza" wrote:

plantee el query y previo Declare respectivo, me sale el error que
"must declare @cnt" donde @cnt esta dentro del @sql como un
texto. leere el link sugerido.

Gracias.

On 28 ene, 11:31, Gux (MVP) 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 -


Respuesta Responder a este mensaje
#4 Juan Carlos Mendoza
28/01/2008 - 18:17 | Informe spam
Gracias.

Lei el articulo (muy bueno!) y modifique exitosamente las sentencias
que estaba preparando.

Saludos

Juan Carlos

On 28 ene, 11:57, Gux (MVP) 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

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:
> plantee el query y previo Declare respectivo, me sale el error que
> "must declare @cnt"  donde @cnt esta dentro del @sql como un
> texto. leere el link sugerido.

> Gracias.

> On 28 ene, 11:31, Gux (MVP) 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 -- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida