Bu soru this birMadde [Birden]
ben boş, olarak varsayılan değeri 3 sql parameter
sahip olduğu tek fark benzer ve eğer kullanıcı bu değerlerin herhangi sağlar nerede Değişken Sonra Yok Blank ise,
begin
SELECT * FROM Careers where
((@position is null and Position is null)
or (Position = @position)) and
((@country is null and Location is null)
or (Location = @country)) and
((@state is null and StateID is null)
or (StateID = @state))
end
: Ben bu yaklaşımı denedi
create procedure [dbo].[SearchCareer]
@country int =null,
@state int =null,
@position int=null
as
begin
SELECT * FROM Careers where [email protected] and @[email protected] and @[email protected]
end
: onlar where
maddesi burada saklanan yordam olduğunu dahil edilmelidir
Kullanıcı yalnızca konum girdiğinde ancak diğer durumlarda çalışmadığında iyi çalışır.
IF , ELSE IF
'u kullanabileceğimi biliyorum Sorgumu kontrol etmek ve oluşturmak için, ancak bundan kaçınmak istiyorum.
Burada neler olup bittiği, tüm sorguları bir sorgu olarak bilinir. Çok yaygındır ve yanlış yapılırsa performans için inanılmaz derecede korkunç olabilir. Mantığın nasıl işleneceğini ve bu tür bir sorgulamanın performansını açıklayan bu makaleye göz atın. http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/ –
Yapmak istediğinizden emin misiniz @ country null ve Location is null' (ve benzeri)? Normalde bir '(@prm null OR colValue = @ prm) ve ...' – Shnugo
@SeanLange bağlantınız için teşekkürler. IF, ELSE IF ya da bu yaklaşımın daha iyi olduğu fikrinize göre. Masaım çok büyük değil .. neredeyse 10k-20k kayıtları olacak. – KanisXXX