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
 

Leer las respuestas

#1 Maximiliano D. A.
11/07/2004 - 18:54 | Informe spam
Hola, en el Exceute no seria asi?

execute('Select @cant_filas= count(*) from '+@nom_tabla)

Suerte


"Raúl Dario Levis" escribió en el mensaje
news:elm%
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 similares