İnsanlar burada söyledikleri gibi, alan adlarını parametre olarak geçememenizdir.
Bir kaç sebepten ötürü almakta olduğunuz bir yaklaşımın kötü bir fikir olduğu, ilk olarak bir sql komutunu bu şekilde ilettiğinizde, sunucunun bu sorguyu her çalıştırdığınızda yeniden derlemesi gerekiyor, bu da sunucuya fazladan yükleme yapıyor ve performansı yavaşlatıyor. İkincisi, seçim ifadelerinizi bu gibi bir şekilde iletme riskidir, çünkü bunu kesişen herkese masa yapınıza bir bakış verir. Üçüncü olarak, bu gibi seçme ifadeleri kullanmak, kodu yeniden kullanmak istemiyorsanız kopyala yapıştırılamaz demektir.
Tavsiye edeceğim şey saklı bir prosedüre geçmektir. Yine de parametrelerinizden geçebilirsiniz ancak kodunuzu SQL'den aldığından ve yalnızca alakalı olanı kaldıracağından kodunuzu geliştirecektir.
Bu gibi select deyiminde kullanılmak üzere GERÇEKTEN alan adlarını gerçekten geçmeniz gerekiyorsa, bunu SQL'de yapabilir ve bir sorgu dizgisi oluşturabilir, ardından sp_executesql kullanarak yürütebilirsiniz.
Temel olarak yaptığınız şey gibi bir sorgu dizesi bildirmek
DECLARE @queryString VARCHAR(3000)
SET @queryString ='SELECT id, '[email protected]+' AS from, '[email protected]+' AS to FROM Dictionary WHERE +'@FROM+' LIKE %'[email protected]+'%'
sonra sadece @queryString'i çalıştırmak için sp_executesql kullanın
Sorgulama yaparken herhangi bir hata alırsanız, parametreleri Varchar olarak atamanız gerekebilir.