आप संख्यात्मक या डेटा मानों में हेरफेर करके @TonyAndrews जैसे समाधान कर सकते हैं। VARCHAR2
. के लिए डायनेमिक SQL का एक विकल्प दो भाव हो सकता है:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
जब :sorting
'ASC'
. का मान है उस ORDER BY
. का परिणाम जैसे हो जाता है:
order by
col1 ASC,
NULL DESC
जब :sorting
इसका मान 'DESC'
. है उस ORDER BY
. का परिणाम जैसे हो जाता है:
order by
NULL ASC,
col1 DESC
इस पद्धति का एक नकारात्मक पहलू यह है कि वे मामले जहां ऑप्टिमाइज़र SORT ऑपरेशन को छोड़ सकता है क्योंकि इसमें एक इंडेक्स शामिल होता है जो डेटा को पहले से ही वांछित की तरह सॉर्ट करता है, ऐसा तब नहीं होगा जब इस तरह CASE विधि का उपयोग किया जाए। यह एक सॉर्टिंग ऑपरेशन को अनिवार्य करेगा चाहे कुछ भी हो।