मेरे पास निम्न एसपी है जिसका उपयोग मैं समाचार लेखों की एक सूची को पेजेट करने के लिए कर रहा हूं। जैसा कि आप अनुमान लगाने में सक्षम हो सकते हैं, @count
वापस आने वाली पंक्तियों की संख्या है, @start
पंक्तियों का चयन करने के लिए सूचकांक है (आंतरिक क्वेरी द्वारा क्रमबद्ध), @orderby
कॉलम को क्रमबद्ध करने के लिए इंगित करता है, और @orderdir
इंगित करता है कि एक दिशा को सॉर्ट करना है या नहीं अन्य। @orderdir
पैरामीटर जोड़ने से पहले, मेरी मूल क्वेरी here थी।संग्रहित प्रक्रिया में पैरामीटर के रूप में डीईएससी और एएससी
ALTER PROCEDURE [mytable].[news_editor_paginate]
@count int,
@start int,
@orderby int,
@orderdir int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@count) * FROM
(
SELECT ne.*,n.publishstate,
(CASE WHEN @orderdir = 1 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END DESC,
CASE WHEN @orderby = 1 THEN ne.lastedit END DESC,
CASE WHEN @orderby = 2 THEN ne.title END ASC
)
WHEN @orderdir = 2 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END ASC,
CASE WHEN @orderby = 1 THEN ne.lastedit END ASC,
CASE WHEN @orderby = 2 THEN ne.title END DESC
)
END
) AS num
FROM news_edits AS ne
LEFT OUTER JOIN news AS n
ON n.editid = ne.id
)
AS a
WHERE num > @start
END
अब कुछ भी गलत नहीं है, लेकिन @orderby
पैरामीटर काम नहीं करता है। यदि @orderdir
पैरामीटर के रूप में 1 प्रदान करते हैं, तो यह मुझे वही परिणाम देगा जैसे कि मैं 2 पैरामीटर के रूप में प्रदान करता हूं।
हाँ कि वास्तव में काम किया मैं कैसे करना चाहता था, यह बहुत स्पष्ट लगता अब आपने इसे लिखा है। धन्यवाद, इसे उत्तर के रूप में चिह्नित करने के लिए प्रतीक्षा करनी है। –
कोई पसीना नहीं। पंक्ति_नंबर बाहर आने पर कुछ बार पहले इस सामान पर मेरे सिर को खरोंच कर दिया। – Gats