ストアド プロシージャ内の私のコード:
SELECT * FROM
my_table ir
WHERE
--where clause goes here
ORDER BY
CASE WHEN p_order_by_field='Id' AND p_sort_order='ASC' THEN IR.ID end,
CASE WHEN p_order_by_field='Id' AND p_sort_order='DESC' THEN IR.ID end DESC,
CASE WHEN p_order_by_field='Date' AND p_sort_order='ASC' THEN TO_CHAR(IR.IDATE, 'MM/dd/yyyy') end,
CASE WHEN p_order_by_field='Date' AND p_sort_order='DESC' THEN TO_CHAR(IR.IDATE, 'MM/dd/yyyy') end DESC;
問題は、ソートが char に基づいて行われることです。これは、日付の場合には間違っています。ただし、CASE ステートメントでは、char 以外のデータ型は許可されません。では、この場合の解決策は何ですか?p_order_by_field をストアド プロシージャに渡せるようにする必要があります。
ありがとう