SQL - Usar un mismo procedimiento para varias tablas.

 
Vista:

Usar un mismo procedimiento para varias tablas.

Publicado por Boli (6 intervenciones) el 26/01/2001 12:16:44
Si tengo un procedimiento almacenado tal que asi:

Select * from TABLA

¿Como puedo sustituir el nombre de la tabla por un valor que le paso al procedimiento?

Gracias ante todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Usar un mismo procedimiento para varias tablas.

Publicado por Eloi (1 intervención) el 26/01/2001 17:33:03
No sé que SGBD utilizas, pero si utilizas Oracle, puedes hacerlo mediante las variables de sustitución

La solución para tu ejemplo seria
SELECT *
FROM &TABLA;

El & indica que TABLA es una variable de sustitución y al ejecutar la consulta te pedirá
un valor para ella, en donde le has de introducir el nombre de la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usar un mismo procedimiento para varias tablas.

Publicado por Antonio Vazquez (7 intervenciones) el 04/02/2001 03:36:49
Igual en SQL Server
SELECT *
@TABLA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Asi imposible Antonio

Publicado por Boli (6 intervenciones) el 06/02/2001 16:38:45
Como dices???? Select * @Tabla .... eso no funciona porque el SQL Server comprueba la existencia de la tabla...y no la encuentra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usar un mismo procedimiento para varias tablas.

Publicado por Angel (20 intervenciones) el 13/02/2001 17:48:29
En SQLServer puedes hacer una 'stored procedure' como la siguiente:

create procedure prueba(@tabla varchar(20))
as
begin
exec ('select * from ' + @Tabla)
end
go
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usar un mismo procedimiento para varias tablas.

Publicado por Boli (2 intervenciones) el 14/02/2001 17:14:55
Eso se que lo puedo hacer cuando devuelvo recordset...pero cuando solo quiero devolver variables que??? osea

exec ('select @Valor=Valor from ' + @Tabla)

No me permite poner 'select' + @Valor +'=Valor ....

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usar un mismo procedimiento para varias tablas.

Publicado por Angel (20 intervenciones) el 14/02/2001 18:14:30
Para esto, la unico que se puede hacer es combinar el uso de una tabla temporal (en la que se guarda el resultado de la query) con el uso del comando EXEC. Puedes hacerlo de la siguiente forma...

1.- crear la tabla temporal (se crea en tempdb y solo dura el tiempo que la transaccion actual esta activa)

create table #valor (valor varchar(20))

2.- construir la sentencia de forma dinamica

select @str = 'select ' + @c + ' from ' + @t + ' where id = ' + @v

3.- llenar la tabla temporal con el resultado de la select previa

insert #valor exec (@str)

4.- leer el resultado

select @resultado = valor from #valor

........

No es tan dificil de usar y te puedo asegurar que funciona.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar