El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Microsoft SQL Server
Foros del Guru > Microsoft SQL Server
Usuario Como hacer un select en un Stored ...
Desconocido
Enviado - 29/9/2004
 
Hola.

Mi problema es que necesito sacar el número de registros de tablas con el mismo nombre que están en bases de datos distintas. Para ello creo un stored procedure, donde creo una tabla que contiene los nombres de las tablas sobre las que quiero hacer el count, y luego recorro esa tabla con un FETCH. Luego, quiero hacer el count sobre cada tabla utilizando otro FETCH de esta manera:

DECLARE cursor_count CURSOR FOR SELECT count(*) FROM @name_table.

@name_table contiene el nombre de la tabla. El problema es que no me reconoce esta variable como tabla. Intenté poniendo #@name_table y #name_table, pero no me funciona. ¿Alguien sabe como puedo hacerlo? Muchas, muchas gracias.
 
the_ma3x
11 Mensaje(s)
Enviado - 15/10/2004
 
Si hiciste un Stored Procedure donde creas una tabla con los nombres de las tablas, porque no usas este Stored.

USE Base_de_Datos
EXEC sp_SpaceUsed 'Nombre_Tabla'

La segunda columna te devuelve el no. de registros.

Solo bastaria que a la hora de que lo ejecutras, seleccionaras la BD

Si haces esto con el Fetch, tal vez no te devuelva errores.

El error que te esta mandando ahorita, puede deberse a lo mismo... que estas ejecutando el Stored en una base y la tabla se encuentra en otra base de datos.

Saludos
 
kimik
6 Mensaje(s)
Enviado - 26/10/2004
 
Hola;
Lo ke intentas hacer es el sueño de todos muchacho. Esto no lo puedes hacer, estás tratando de hacer un select de una tabla cuyo nombre está en una variable. Es como si kisieras hacer un select @campo1, @campo2 from ..... eso tampoco se puede.
Si intentas hacer algo "dinamico", puedes tratar de hacer lo siguiente:
declare @sql as varchar(500)
set @sql = 'select count(*) from'+@name_table
exec (@sql)
pero solo te serviría para ejecutar una consulta.... luego tendrías ke guardar los resultados de alguna manera
un verdadero lío.... además, definir Stored Procedures ejecutando la consulta así, no tiene sentido.
El "USE DB" no lo puedes utilizar dentro de un procedimiento almacenado, existe otra forma de hacer consultas a bases de datos remotas (buscalo en la ayuda de sql server 2000, ahí sale, ahora no me acuerdo).
Así que tienes 2 opciones... sigues con tu idea de los cursores, y haces algo similar a lo ke te mencioné arriba y vas guardando los resultados, u otra, ke aún no se me ocurre ;)

 
 

 

Contactos myStudio Network