Bir sorum var ve belki de basit (sizin için Gurus için).Dinamik MySQL Saklı Prosedürde Madde
SQL Paging sınıfımı C# dan MySQL Stored Procedure'a aktarıyorum. C# ev yapımı nesnemde, sorgu bir ölçüt temelinde dinamik olarak oluşturulur. Örnek:
if(keywords is not null)
{
whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
whereClause += "AND price = '%price%'"
}
....
string query = "SELECT col1, col2 FROM tblThreads " + whereClause
Şimdi sorum edilir: Nasıl buna benzer MySQL dinamik nerede maddesini yaparsınız? Ya da, bu parametreler için herhangi bir şey girmezlerse, MySQL'in Depolanmış Prosedürde bunları atlamasını nasıl söylerdim? IE: bu parametreler boş olsaydı bu işi gibi
SELECT col1, col2 FROM tblThreads
misiniz şey?
SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'
??
Teşekkürler çocuklar.
ben bunu sevdim. Bunu, SQL deyimlerinin "ağır" ayrıştırmasını yapmak zorunda olduğumda, yani AND cümlelerini programlı olarak kaldırdığımda kullanıyorum. "Önceki" ve "geri gitmenizi ve bu satırı kaldırmanızı vb. Sağlar. WHERE yan tümcesinin indirgenmesi bu kadar kolaylaştırır. –
Bunu bir kez daha önce gördüm ve orijinal soruma cevap vermese de ilginç. C# nesnesine yapıştığımı varsayalım, şimdi "VE" kullanıp kullanmadığımı belirlemeye çalışıyorum (VE kullandığım an doğru olarak ayarlanmış bir boole değişkeni var.) Bunu yaptığımı varsayarak İlk parametreyi kullandığımda, takip etmem gerekiyor mu? Bu herhangi bir performans cezaları var mı ve 1 = 1 neden herhangi bir sorun var mı? –
Sadece bazı ek detaylara bakınız: http://stackoverflow.com/questions/8149142/where-1-1-tatement Aslında bu fikri beğendim ve uygulamayı deneyeceğim. Bahşiş için teşekkürler! Aynı zamanda bu yöntemi kullanarak depolanmış prosedürümü de kurabilirim, eğer bu caddeyi takip etmeye karar verirsem. Teşekkürler beyler. –