Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Nombre de tabla variable

Estas en el tema de Nombre de tabla variable en el foro de Bases de Datos General en Foros del Web. Hola a todos, he creado un procedimiento almacenado, mediante el cual hago una consulta select para cargar unos datos en una pagina web, lo que ...
  #1 (permalink)  
Antiguo 28/08/2009, 09:49
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 9 meses
Puntos: 14
Nombre de tabla variable

Hola a todos, he creado un procedimiento almacenado, mediante el cual hago una consulta select para cargar unos datos en una pagina web, lo que pasa es que el nombre de la tabla de la que recupero los datos es una variable, es decir hay diferentes tablas con distintos nombres pero con los mismos campos, entonces en el select tengo que especificar en que tabla encontrar los datos.
En este foro encontre con el buscador un codigo, que despues de adaptarlo quedo asi:

Código:
ALTER PROCEDURE [dbo].[procImprimirDatos] 
    @pedido bigint,
    @tabla AS varchar(200) AS DECLARE @StringSQL varchar(5000)

BEGIN SET @StringSQL = RTRIM ('SELECT ' + @tabla + '.codigo, '+@tabla+'.campo1, '+@tabla+'.campo2,
   pedido.codigo, pedido.fecha
 FROM '+@tabla+' INNER JOIN pedidos ON '+@tabla+'.pedido=pedido.codigo
 WHERE '+@tabla+'.pedido=@pedido')
 
 EXEC (@StringSQL)
 END
Este codigo me da un error:
"La funcion o procedimiento imprimir datos tiene demasiados argumentos"

Yo le paso los parametros @pedido y @tabla, desde la pagina web, esos dos datos se los paso bien.
Creo que el problema es el @StringSQL, que no se lo paso por parametro, por que segun el codigo que vi por la web, decian (si no me equivoco) que ese parametro es la consulta. Posiblemente este equivocado

Cualquier ayuda es bienvenida ya que no se que hacer, y me corre bastante prisa, llevo dias luchando con el pero no hay manera

Muchas gracias a todos. Un saludo
Pinty
  #2 (permalink)  
Antiguo 30/08/2009, 10:53
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 9 meses
Puntos: 14
Respuesta: Nombre de tabla variable

Hola a todos.Nadie puede ayudarme??
Cualquier tipo de informacion por pequeña que sea que me pueda ayudar sera bien recibida.
Gracias a todos

Un saludo

Pinty
  #3 (permalink)  
Antiguo 31/08/2009, 08:10
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 15 años, 4 meses
Puntos: 13
Respuesta: Nombre de tabla variable

hay cosas que no me quedan claras...
el nombre de la tabla es una variable? omg

y por qué no haces la consulta directamente de la tabla (Select * From tabla)
no influye nada que tengas mil tablas con los mismos campos
quizas redundancia, pero eso no viene a lo que preguntas

saludos
  #4 (permalink)  
Antiguo 01/09/2009, 16:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 9 meses
Puntos: 14
Respuesta: Nombre de tabla variable

Hola Twonex, muchas gracias por responder. El tema de que tenga que usar varias tablas con los mismos campos es meramente una cuestion de diseño de la base de datos, que no he realizado yo, asi que aunque sea redundante (que se que lo es) no me queda mas remedio que hacerlo.

Con respecto a la consulta en si, el tema es que se pueda escoger en que tabla guardar los datos, es decir,por poner un ejemplo sencillo de cual es mi idea seria algo asi.

Código:
SELECT * FROM @tabla WHERE variable=@variable
.
El tema es que el nombre de la tabla sea tambien un campo que se pasa como parametro.

El codigo que investigando consegui, lo he puesto en el primer mensaje, pero la idea a grandes rasgos es esa.

Espero que me puedan ayudar
  #5 (permalink)  
Antiguo 03/09/2009, 10:36
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 15 años, 4 meses
Puntos: 13
Respuesta: Nombre de tabla variable

por lo que cuentas me sorprende que alguien haya podido haber diseñado algo asi...

el que tengas un campo con el mismo nombre de la tabla no te afectara, las consultas son direfentes, el from es para tablas, el where es para campos de la tabla asi que no te preocupes...

y el ejemplo de consulta que das es correcto, deberia funcionar sin problemas
ante cualquier duda solo vuelve a comentarlo

saludos :P
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.