execute dentro de cursor y cursor dentro de stored proc

11/07/2004 - 16:23 por Raúl Dario Levis | Informe spam
Tengo que realizar un SP que contenga un cursor. Este cursor lo utilizo para
obtener los nombres de las tablas dentro de una base de datos (for select
name from datos..sysobjects where type='U'), a su vez el procedimiento me
tiene que devolver una tabla con el nombre de la tabla y la cantidad de
filas.
Yo probé de la siguiente manera y no me funciona:
Create proc REPORTE
as
begin
create table #temporal (nam varchar(50),filas int)
declare cursor_tabla insensitive cursor
for select name from datos..sysobjects where type='U'
open cursor_tabla
declare @cant_filas int,
@nom_tabla varchar(40)
fetch next from cursor_tabla into @nom_tabla
while @@fetch_status= 0
Begin
execute('Select @cant= count(*) from '+@nom_tabla) /* aquí
da el error que me dice que @cant no esta declarado*/
insert into #temporal values(@nom_tabla,@cant)
fetch next from cursor_tabla into @nom_tabla
end
close cursor_tabla
deallocate cursor_tabla
end
El problema es con el execute y la asignacion del @cant, si no lo puedo
hacer así trataré de alguna otra forma.
desde yá muchisimas gracias

Preguntas similare

Leer las respuestas

#6 Miguel Egea
13/07/2004 - 13:08 | Informe spam
Creo que no, se actualiza con una formula que es algo así como %incremento
multiplicado por algo, puedo buscartela exactamente, está en el inside sql
se Kalen delany.


-

Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)
Brigada Anti-Cursores
Microsoft SqlServer M.V.P.

"ulises" escribió en el mensaje
news:
Ops, tienes toda la razón Miguel, en todo caso si se trata de una
consulta que se realizará fuera de horas de uso del sistema que aloja
la BBDD se puede actualizar las estadísticas y luego ejecutar la
consulta propuesta.

DBCC UPDATEUSAGE ('tubbdd' ) WITH COUNT_ROWS
SELECT ...

ojo, no lo aconsejo que se haga durante horas de uso de la BBDD porque
produciría bloqueos y afectaría el rendimiento.

Y a propósito, ¿es factible cambiar la frecuencia de actualización de
estos datos?, sé que la recarga aumenta pero pregunto solo por
curiiosidad ...

Saludos,
Ulises

On Mon, 12 Jul 2004 17:41:01 +0200, "Miguel Egea"
wrote:

>Hola ulises, aun con esa opción levantada nada te asegura de que rowcnt
>tenga un valor ok...
>
>




-

Respuesta Responder a este mensaje
#7 ulises
13/07/2004 - 15:13 | Informe spam
No te preocupes, ya recordé la formula, exactamente se
puede encontrar en

INF: How SQL Server 7.0 and SQL Server 2000 Autostats Work
http://support.microsoft.com/defaul...cid=kb;en-
us;195565,

solo preguntaba por si había algún trace flag u otro tip
para cambiarlo.

Gracias,
Ulises

Creo que no, se actualiza con una formula que es algo así


como %incremento
multiplicado por algo, puedo buscartela exactamente, está


en el inside sql
se Kalen delany.


-


Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)
Brigada Anti-Cursores
Microsoft SqlServer M.V.P.

"ulises" escribió en el


mensaje
news:
Ops, tienes toda la razón Miguel, en todo caso si se




trata de una
consulta que se realizará fuera de horas de uso del




sistema que aloja
la BBDD se puede actualizar las estadísticas y luego




ejecutar la
consulta propuesta.

DBCC UPDATEUSAGE ('tubbdd' ) WITH COUNT_ROWS
SELECT ...

ojo, no lo aconsejo que se haga durante horas de uso de




la BBDD porque
produciría bloqueos y afectaría el rendimiento.

Y a propósito, ¿es factible cambiar la frecuencia de




actualización de
estos datos?, sé que la recarga aumenta pero pregunto




solo por
curiiosidad ...

Saludos,
Ulises

On Mon, 12 Jul 2004 17:41:01 +0200, "Miguel Egea"
wrote:

>Hola ulises, aun con esa opción levantada nada te




asegura de que rowcnt
>tenga un valor ok...
>
>





-





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida