Comunidad de desarrolladores de Puebla.NET
Iniciar sesión Unete ahora
 
 
Novedades | Anuncios | Eventos | Publicaciones | Foros | Bolsa de trabajo | Conocenos | Encuestas
 
  Buscar  
Novedades > Foros > SQL    
 
Anónimo
3179305 visitas desde Octubre de 2004
2 usuarios en línea
Contáctanos en línea:





Certificate Veracruz

Seguridad


 
SQL

Autor Discusión: Consulta "dinámica" para SQL
eos.chaos
Consulta "dinámica" para SQL
Enviado: Monday, May 22, 2006 3:15 AM (UMST)
Buenos días, Necesito una consulta un poco especial con parámetros, digo especial, porque aparte de los parámetros que usamos para el WHERE, necesito usar un parámetro para indicar el nombre de una tabla, para hacer el INNER JOIN. Os pongo aquí el código, a ver si lo podeis mirar un poco :) Esta es la consulta que creo para un sqlcommand en .net SELECT COUNT(*) AS Num FROM Servicio_Llamada INNER JOIN @buscar_en_tabla ON Servicio_Llamada.Id_Servicio_Produccion = @buscar_en_tabla.Id_Servicio_Produccion AND Servicio_Llamada.N_Servicio = @buscar_en_tabla.N_Servicio AND Servicio_Llamada.Numero_de_llamada = @buscar_en_tabla.Numero_de_llamada WHERE (Servicio_Llamada.Numero_de_llamada = @numero_de_llamada) AND (Servicio_Llamada.Id_Servicio_Produccion = @id_servicio_produccion) AND (Servicio_Llamada.N_Servicio = @n_servicio) Y este el código de los parámetros que le añado. cmd.Parameters.Add("@id_servicio_produccion", SqlDbType.Int, 4).Value = Me.IdServicioProduccion cmd.Parameters.Add("@n_servicio", SqlDbType.Int, 4).Value = Me.NServicio cmd.Parameters.Add("@numero_de_llamada", SqlDbType.Int, 4).Value = Me.NumeroDeLlamada cmd.Parameters.Add("@buscar_en_tabla", SqlDbType.NVarChar, 100).Value = Me.BuscarEnTabla Muchas gracias de antemano, Saludos.


Comentarios:

Author Tema:
miguelajh
Consulta "dinámica" para SQL
Enviado: Thursday, November 23, 2006 8:21 PM (UMST)

Saludos Amigo:

 

Pues mira, para realizar lo que tu quieres es algo mas o menos así :

 

Te lo pongo facil

tu quieres hacer un select entre varias tablas que se llaman mas o menos igual, por ejemplo:    ventas1, ventas2, ventas3

 

deberias de ponerlas así:

declare @tabla varchar(8)

set @tabla = ventas1

exec ('select * from ' + @tabla + where mes = 8')

 

Esto es un ejemplo facil, pero es aplicable por ejemplo en cursores, de esa forma obtienes todos los nombres y ejecutas.

 

NOTA:

cuando necesitas valores encerrados entre comillas, por ejemplo:

where nombre = 'miguel'

lo tendrias que poner así:

declare @valor varchar

set @valor = char(39) + 'miguel' +char(39)

 

si le das print @valor

te devuelve : 'miguel'

y quedaría así:

 

 

declare @valor varchar

set @valor = char(39) + 'miguel' +char(39)

 

exec ('select * from empleados where nombre = ' + @valor)