आप ORDER BY क्लॉज में कॉलम को संदर्भित करने के लिए बाइंड वेरिएबल्स (पैरामीटर) का उपयोग नहीं कर सकते। हालांकि, आप बाइंड वेरिएबल का उपयोग इस तरह एक एक्सप्रेशन में कर सकते हैं:
@Query("select * from coin ORDER BY
CASE :order
WHEN 'percent_change_24h' THEN percent_change_24h
WHEN 'other_column_name' THEN other_column_name
END asc limit :numberOfCoins")
fun getAllTop(order: String, numberOfCoins: Int): Flowable<List<CoinDB>>
आपको प्रत्येक कॉलम/एक्सप्रेशन के लिए केस स्टेटमेंट में एक अलग WHEN क्लॉज जोड़ने की आवश्यकता होगी, जिसे आप सॉर्ट करना चाहते हैं, और आपको उन स्थितियों के लिए ELSE क्लॉज की आवश्यकता हो सकती है या जोड़ना चाह सकते हैं जहां:ऑर्डर बाइंड वेरिएबल किसी से मेल नहीं खाता है। आपके मानक मामले।
बाइंड वेरिएबल्स पर प्रतिबंध जहां क्लॉज और प्रोजेक्शन (चयन सूची) के लिए भी सही है। बाइंड वेरिएबल के आपके उदाहरणों में या तो स्ट्रिंग या इंट के लिए क्रमशः:ऑर्डर और :numberOfCoins के लिए अपने स्वयं के मान हैं।