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

Personalizar un WHERE

Estas en el tema de Personalizar un WHERE en el foro de SQL Server en Foros del Web. Hola amigos, he intentado algo pero no me sale... alguien puede sugerirme una sintaxis donde yo pueda personalizar el contenido de un WHERE?? Es decir, ...
  #1 (permalink)  
Antiguo 13/06/2007, 07:38
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 7 meses
Puntos: 0
De acuerdo Personalizar un WHERE

Hola amigos, he intentado algo pero no me sale... alguien puede sugerirme una sintaxis donde yo pueda personalizar el contenido de un WHERE??
Es decir, quisiera que me presente las mismas columnas para diversos criterios de entradas de un SP; estos criterios no solo varian de valoir que toma la columna, sino tambien de columna.

Ej.
Criterio 1

Select campo1,campo2
from Tabla
where ColumnaX=@Entrada1


Criterio 2
Select campo1,campo2
from Tabla
where ColumnaY=@Entrada2


Mi idea sería poner todo el WHERE en una cadena o algo asi, y luego invocarle como variable...

Select campo1,campo2
from Tabla
where VARIABLE

He intentado pero me sale una variedad de errores de tipos y esas cosas.

Les agradezco por la ayuda amigos. Gracias

Luis
  #2 (permalink)  
Antiguo 13/06/2007, 08:55
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Personalizar un WHERE

Que tal LUISESPOCH.

Es más o menos como cuando las ejecutas desde VB, es decir, armas una cadena con la sentencia y la mandas a ejecutar, por ejemplo:
Código:
SET @strMyTable = 'users'
SET @strSQL = ' SELECT * FROM ' + @strMyTable
EXEC ( @strSQL)
Saludos!!

Última edición por daniel00; 13/06/2007 a las 08:56 Razón: Error de sintaxis.
  #3 (permalink)  
Antiguo 13/06/2007, 09:17
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Personalizar un WHERE

Daniel gracias por tu ayuda, de la misma forma lo estoy haciendo pero ahora tengo un problema con el contenido que puede guardar la cadena. En su contenido yo estoy enviando otras subconsultas que se asigna a un campo del select, pero tengo problemas de conversion de tipos. Te ilustro la sentencia:

set @Consulta=
'SELECT ar.CodigoFabricante, ar.IdCategoria,"Categoria" = isnull((Select top 1 Nombre from inv_categoria where idEmpresa ='+ @IdEmpresa+' and IdCategoria = ar.IdCategoria),"Ninguna")
from Inv_Articulo ar inner join Inv_bodegaArticulo bart on ar.IdEmpresa=bart.IdEmpresa and
ar.IdArticulo = bart.IdArticulo inner join Inv_categoria cat on
ar.IdEmpresa=cat.IdEmpresa and ar.IdCategoria=cat.IdCategoria

exec (@Consulta)



El error que me sale es este...

Msg 245, Level 16, State 1, Procedure Inv_P_ConsultaArticulos, Line 87
Conversion failed when converting the varchar value 'SELECT ar.CodigoFabricante, ar.IdCategoria,"Categoria" = isnull((Select top 1 Nombre from inv_categoria where idEmpresa =' to data type int.

Qué esta mal en mi referencia??

Gracias amigo
  #4 (permalink)  
Antiguo 13/06/2007, 09:32
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Personalizar un WHERE

Te comento que solucioné ese mensaje de conversion... lo que hice fue convertirle ese dato entero a un varchar, como se que todo eso finalmente estará en una cadena, entonces el exec(@consulta) funcionaría sin problemas.
Bueno pero ahora tengo otro problemilla, recuerdas que la setencia de validacion isnull??, el mensaje de error me sale por el valor que le asigno cuando es null, yo le indico que me asigne la palabra 'Ninguno' (pero con "" ), y es ahi el problema.
Te ilustro..

set @Consulta=
'SELECT ar.CodigoFabricante, ar.IdCategoria,"Categoria" = isnull((Select top 1 Nombre from inv_categoria where idEmpresa ='+ cast(@IdEmpresa as varchar(3))+' and IdCategoria = ar.IdCategoria),"Ninguna")
from Inv_Articulo ar inner join Inv_bodegaArticulo bart on ar.IdEmpresa=bart.IdEmpresa and
ar.IdArticulo = bart.IdArticulo inner join Inv_categoria cat on
ar.IdEmpresa=cat.IdEmpresa and ar.IdCategoria=cat.IdCategoria
'
El error que esta vez me sale es este...

Msg 207, Level 16, State 1, Line 1
Invalid column name 'Ninguna'.

Si me puede sugerir una solucion, les agradecería.

Luis
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 05:13.