Filtro en tiempo de ejecucion

15/10/2006 - 16:00 por JOMIJIMO | Informe spam
Me gustaria si alguien me puede ayudar.

Tengo un SP para recuperar los registros de una tabla.
Ciertos campos de esta tabla deben cumplir ciertas condiciones.

Hasta aqui todo bien, ya que he creado parametros para esto campos.

Pero, como siempre hay un pero..

Necesito tambien que además del valor de cada parametro se le pasa al
SP el operador por el que debe comparar ( = > < <> Between
etc, etc, etc)

Lo intenté asi pero me da un error:

ALTER PROCEDURE qry_PRUEBAS001

(@FechaAsiento NVARCHAR(6),
@OperadorFecha Nvarchar(2),
@IdCta NVARCHAR(50))

AS

SELECT * FROM Asientos

CASE @OperadorFecha
WHEN '=' THEN WHERE Fecha_Asiento = @FechaAsiento AND
WHEN '<' THEN WHERE Fecha_Asiento < @FechaAsiento AND
WHEN '>' THEN WHERE Fecha_Asiento > @FechaAsiento AND
WHEN '>=' THEN WHERE Fecha_Asiento >= @FechaAsiento AND
WHEN '<=' THEN WHERE Fecha_Asiento <= @FechaAsiento AND
WHEN '<>' THEN WHERE Fecha_Asiento <> @FechaAsiento AND
END

Id_Cuenta = @IdCta


Alquien me puede ayudar.?

Gracias

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
17/10/2006 - 14:47 | Informe spam
Carlos,

Gracias por el comentario. Espero les ayude en algo y tambien les pido que
no dejen de enviar sus puntos de vista sobre el tema en cuestion.

saludos,

Alejandro Mesa

"Carlos Sacristán" wrote:

Felicidades por el artículo, Alejandro. Creo que está muy claro, lo
añadiré a los enalces favoritos cuando salga este tema (muy comentado, por
cierto)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Alejandro Mesa" escribió en el
mensaje news:
> JOMIJIMO,
>
> Vamos a ir por puntos.
>
> 1 -
>
>> No entiendo lo que dices de que el CASE tiene que devolver un valor.
>>
>> en lo que a continuacion te detallo creo que no es asi, y sin embargo
>> funciona perfectamente:
>>
>> SELECT Category > >> CASE type
>> WHEN 'popular_comp' THEN 'Popular Computing'
>> WHEN 'mod_cook' THEN 'Modern Cooking'
>> WHEN 'business' THEN 'Business'
>> WHEN 'psychology' THEN 'Psychology'
>> WHEN 'trad_cook' THEN 'Traditional Cooking'
>> ELSE 'Not yet categorized'
>> END,
>> CAST(title AS varchar(25)) AS 'Shortened Title',
>> price AS Price
>> FROM titles
>>
>> Me puedes aclarar algo más esta cuestion.
>
> La expresion "case" devuelve un valor, no es una macro-substitucion. En
> una
> expresion logica, deben haber operandos en ambos lados del operador,
> excepto
> cuando negamos.
>
> <operando_1> <operador> <operando_2>
>
> En el ejmplo que posteastes, le dices a SQL Server que ejecute la
> sentencia
> "select * from Asientos", a continuacion usas la expresion "case", lo cual
> se
> interpreta como una nueva sentencia. Trata de ejecutar lo siguiente en
> "Query
> analyzer":
>
> use northwind
> go
>
> case when 1 = 1 then 'a' else 'b' end
> go
>
> SQL Server dara error, por esa sentencia por si solo no es una sentencia
> permitida por SQL Server. Ese es el error que esta ocurriendo en tu
> procedimiento. SQL Server no tiene la facilidad de macro-substitucion,
> pues
> este no codigo interpretado.
>
> 2 -
>
>> Por cierto gracias por tu respuesta, pero lo la solucion que me
>> propones ¿no es lo mismo que si genero la sentencia sql directamente
>> desde el programa que gestiona la BDD?
>> porque si es así no veo en que me beneficia hacer un SP. Con generarla
>> directamente en el programa bastaria
>
> Tomate tu tiempo y leete este articulo. Si despues de leerlo tienes
> todavia
> dudas de por que usar un procedimiento almacenado, entonces postea tus
> preguntas en el mismo hilo.
>
> SQL Server y la Autoparametrización
> http://www.configuracionesintegrale...articulo33
>
>
> AMB
>
>
> "JOMIJIMO" wrote:
>
>> No entiendo lo que dices de que el CASE tiene que devolver un valor.
>>
>> en lo que a continuacion te detallo creo que no es asi, y sin embargo
>> funciona perfectamente:
>>
>> SELECT Category > >> CASE type
>> WHEN 'popular_comp' THEN 'Popular Computing'
>> WHEN 'mod_cook' THEN 'Modern Cooking'
>> WHEN 'business' THEN 'Business'
>> WHEN 'psychology' THEN 'Psychology'
>> WHEN 'trad_cook' THEN 'Traditional Cooking'
>> ELSE 'Not yet categorized'
>> END,
>> CAST(title AS varchar(25)) AS 'Shortened Title',
>> price AS Price
>> FROM titles
>>
>> Me puedes aclarar algo más esta cuestion.
>>
>> Por cierto gracias por tu respuesta, pero lo la solucion que me
>> propones ¿no es lo mismo que si genero la sentencia sql directamente
>> desde el programa que gestiona la BDD?
>> porque si es así no veo en que me beneficia hacer un SP. Con generarla
>> directamente en el programa bastaria
>>
>> Gracias otra vez.
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida