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

condicionar where

Estas en el tema de condicionar where en el foro de SQL Server en Foros del Web. hola a tod@s, me gustaría saber si un where se puede hacer "dinámico".. como algo asip. Código: select * from denuncio where select case @opt ...
  #1 (permalink)  
Antiguo 13/09/2006, 15:32
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
condicionar where

hola a tod@s, me gustaría saber si un where se puede hacer "dinámico"..
como algo asip.
Código:
select * 
from denuncio
where 
	select case @opt when 1 then 
		cod_estado=100 
	else 
		cod_estado=990 
	end
order by cod_item
ske tengo una konsulta larga ke okupo varias veces..
pero kada vez, lo uniko ke se kambian son las kondiciones del where.. porke los datos ke necesito del select son siempre los mismos..
sería ideal ke se puediera para no star repitiendo tremenda konsulta solo para kambiar las kondiciones....alguien sabe komo lo podría hacer..??
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #2 (permalink)  
Antiguo 13/09/2006, 16:30
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Si se puede, pero requieres de cuidados adicionales, además de que complicas el mantenimiento y debug un poco más. Léete esta liga:
http://www.sommarskog.se/dynamic_sql.html
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 14/09/2006, 07:41
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
ok. muxas gracias Mithrandir....
kada vez me alegro mas ke exista este sitio..jii...
graxias..by by...
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #4 (permalink)  
Antiguo 14/09/2006, 14:32
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
Mithrandir....estube haciendo unas pruebas en mi sql 2000, pero no me resulta., lo que pasa que aparte de condicionar los valores, tb me gustaría condicionar los campos del where...algo asip..
Código:
DECLARE @opt int
DECLARE @sql nvarchar(2000)
declare @campo nvarchar(1000)
declare @valor nvarchar(1000)

if @opt = 1
begin
	set @campo='cod_item'
	set @valor='68400'
end
else
begin
	set @campo='cod_estado'
	set @valor='100'
end

SELECT @sql = 'SELECT * FROM   dbo.denuncio WHERE @campo = @valor'
execute sp_executesql @sql, N'@campo varchar(100),@valor varchar(100)',@campo,@valor
si se puede komo lo hagoooooo...?? kon el ejemplo ke puse arriba no me resulta.. pero tampoko me da erro.. y resulta ke si existe un registro con el cod_item = 68400
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #5 (permalink)  
Antiguo 15/09/2006, 06:54
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
puedes usar exec('select * from '+@Campos + ' = '+@Valor)
  #6 (permalink)  
Antiguo 15/09/2006, 09:16
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
execute ('select * from denuncio where '+@campo+'='+@valor)aaa ahy sip...jiji..
muxas gracias...
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #7 (permalink)  
Antiguo 15/09/2006, 13:37
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Revisa este tema: http://www.forosdelweb.com/f87/error-not-valid-identifier-425821/

Usar EXEC a secas no es de lo más eficiente y seguro. En tu lugar mejor buscaría que está mal en el lado de sp_executesql
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 21:31.