Hacer un solo select

18/10/2006 - 19:26 por Erik Martinez | Informe spam
hola a todos.

a continuación les presento un procedimiento almacenado que hice:

CREATE PROCEDURE sp_ProdEstOri
@Filtro int,
@Valor int
as

if @filtro=1
begin
select listacampos from tablas
end
else
begin
if @filtro=2
begin
select listacampos from tablas where campo1=@valor
end
else
begin
if @filtro=3
begin
select listacampos from tablas where campo2=@valor
end
else
begin
select listacampos from tablas where campo3=@valor
end
end
end
go

notaran que las diferencias en los 4 select es: que en el primero no existe
la clausula where.
y en los otros 3 el nombre del campo cambia en la clausula where.

¿De que forma puedo hacer un solo select y cambiar la condición por medio
de una variable.?

de antemano muchas gracias.
 

Leer las respuestas

#1 Miguel Egea
18/10/2006 - 19:46 | Informe spam
Poderse se puede, pero este método te dará mayor rendimiento casi con total
seguridad, de todas formas te daría mayor rendimiento tener 4 procedimientos
almacenados distintos y decidir a cual llamas en la aplicacion.

El motivo es que los procedimientos están en caché con un plan de ejecución
que se creará cuando llames la primera vez a este procedimiento y eso
dependiendo de lo que valga "valor" puede ser bueno o malo para el resto de
las ejecuciones.

Saludos
Miguel Egea


"Erik Martinez" <nadie@@microsoft.com> wrote in message
news:%
hola a todos.

a continuación les presento un procedimiento almacenado que hice:

CREATE PROCEDURE sp_ProdEstOri
@Filtro int,
@Valor int
as

if @filtro=1
begin
select listacampos from tablas
end
else
begin
if @filtro=2
begin
select listacampos from tablas where campo1=@valor
end
else
begin
if @filtro=3
begin
select listacampos from tablas where campo2=@valor
end
else
begin
select listacampos from tablas where campo3=@valor
end
end
end
go

notaran que las diferencias en los 4 select es: que en el primero no
existe la clausula where.
y en los otros 3 el nombre del campo cambia en la clausula where.

¿De que forma puedo hacer un solo select y cambiar la condición por medio
de una variable.?

de antemano muchas gracias.


Preguntas similares