Ich bin in einem optionalen OrderBy-Wert übergeben worden, der standardmäßig auf DESC
gesetzt werden sollte, und wenn dieser Wert auf false festgelegt ist, sollte ORDER BY ASC
. Ich bin nicht wirklich sicher, wie man diese Bestellung basierend auf der Eingabe durchführt. Hier ist, was ich habe zur Zeit:Optionaler OrderBy-Parameter in der gespeicherten MySQL-Prozedur
CREATE DEFINER=`app`@`%` PROCEDURE `BLAH`(
pWithdrawalTransactionId INT,
pLimit INT,
pSortDescending TINYINT
)
BEGIN
DECLARE vLimit INT DEFAULT COALESCE(pLimit, 100);
DECLARE vSort TINYINT DEFAULT COALESCE(pSortDescending, 1);
SELECT
f.WithdrawalFulfillmentId, f.PaymentStatusId, f.PaymentProcessorId, f.PaymentTypeId, r.Amount, r.RequestedAmount, r.NativeAmount, r.NativeRequestedAmount, r.RefundTransactionId, r.UpdatedDate
FROM
FinOps.UserWithdrawalFulfillment f
INNER JOIN
FinOps.UserRefundTransaction r ON f.RefundTransactionId = r.RefundTransactionId
WHERE
f.WithdrawalTransactionId = pWithdrawalTransactionId
LIMIT
vLimit;
END
Es hängt davon ab, welche Spalte (Typ) Sie bestellen möchten und wenn Sie brauchen Ihre Indizes, um mit der Reihenfolge zu arbeiten (zB wenn Sie einen zusammengesetzten Index haben, der 'WithdrawalTransactionId' oder' RefundTransactionIdand' und Ihre Bestellspalte enthält) – Solarflare
Ich möchte mit der WithdrawalTransactionId bestellen, wenn das hilft. Aber der wahre Kampf ist der optionale Teil –