আমি ভাবছি যে আমি যে স্টোরেজ পদ্ধতিতে চলছি সে সম্পর্কে কিছু প্রতিক্রিয়া জানতে পারি এবং পরিস্থিতি পরিচালনার আরও কার্যকর উপায় আছে কিনা (আমি অবশ্যই নিশ্চিত যে সেখানে আসবে!)।
মূলত আমার কাছে একটি একক এসপি রয়েছে যা আমি রেকর্ডগুলির একটি তালিকা (জবস) ফিরিয়ে আনার জন্য কল করি যার মধ্যে এক বা একাধিক স্ট্যাটাস এবং একটি সাজানোর অর্ডার থাকতে পারে (আমি পেজিংয়ের জন্য রোউনাম ব্যবহার করছি)। এই মুহুর্তে আমি রিকম্পিলে ব্যবহার করছি কারণ স্ট্যাটাসগুলির প্রকরণগুলি সর্বদা পরিবর্তিত হতে পারে (ব্যবহারকারীর উপর নির্ভর করে)। কিছু ফিল্টারিং চলছে।
আমি একই আইটেমটি একই বিট কোডটি চালানোর জন্য আইএফ স্টেটমেন্টটি ব্যবহার করছি কেবলমাত্র সাজানোর ক্রম হিসাবে change
আমার অনুমান আমার প্রশ্নগুলি হ'ল: এটি করার আরও ভাল উপায় কি আছে (বিভিন্ন স্ট্যাটাসের জন্য বিভিন্ন এসপি হতে পারে)? আমি কি জ্ঞানের অভাবে জিনিসগুলিকে অতিরিক্ত জটিল করে তুলছি (বেশিরভাগ সম্ভাবনা) এসপি কি আসলেই ঠিক আছে, তবে লাইনের সংখ্যা হ্রাস করার জন্য ছোটখাটো টুইটগুলি দরকার?
আমি নীচে এসপির একটি অংশ পেস্ট করেছি - সম্পূর্ণ কোডের সাথে একমাত্র পার্থক্য হ'ল বিভিন্ন সাজানোর আদেশের জন্য অতিরিক্ত আইএফ স্টেটমেন্ট ...
আমি কোন প্রতিক্রিয়া প্রশংসা করব।
আগাম ধন্যবাদ!
PROCEDURE [dbo].[sp_Jobs]
@PageNumber int,
@PageSize int,
@FilterExpression varchar(500),
@OrderBy varchar(50),
@CustomerID int,
@ShowNotSet bit,
@ShowPlaced bit,
@ShowProofed bit,
@ShowReProofed bit,
@ShowApproved bit,
@ShowOnTime bit,
@ShowLate bit,
@ShowProblem bit,
@ShowCompleted bit,
@ShowDispatched bit,
@ShowUnapproved bit,
@ShowClosed bit,
@ShowReturned bit,
@UserID int
WITH RECOMPILE
AS
--JobNumber DESC
if @OrderBy='JobNumberDESC'
BEGIN
WITH Keys AS (SELECT TOP (@PageNumber * @PageSize) ROW_NUMBER() OVER (ORDER BY JobNumber DESC) as rn,P1.jobNumber,P1.CustID,P1.DateIn,P1.DateDue,P1.DateOut,p1.client,p1.MasterJobStatusID,p1.MasterJobStatusTimestamp,p1.OwnerID
FROM
vw_Jobs_List P1 WITH (NOLOCK)
WHERE
(@CustomerID = 0 OR CustID = @CustomerID)
AND (@UserID = 0 OR OwnerID = @UserID)
AND ((@ShowNotSet = 1 AND MasterJobStatusID=1) OR (@ShowPlaced = 1 AND MasterJobStatusID=2) OR (@ShowProofed = 1 AND MasterJobStatusID=3) OR (@ShowReProofed = 1 AND MasterJobStatusID=4) OR (@ShowApproved = 1 AND MasterJobStatusID=5) OR (@ShowOnTime = 1 AND MasterJobStatusID=6) OR (@ShowLate = 1 AND MasterJobStatusID=7) OR (@ShowProblem = 1 AND MasterJobStatusID=8) OR (@ShowCompleted = 1 AND MasterJobStatusID=9) OR (@ShowDispatched = 1 AND MasterJobStatusID=10) OR (@ShowUnapproved = 1 AND MasterJobStatusID=11) OR (@ShowClosed = 1 AND MasterJobStatusID=12) OR (@ShowReturned = 1 AND MasterJobStatusID=13)) AND (Search LIKE '%'+@FilterExpression+'%')
ORDER BY
P1.JobNumber DESC ),SelectedKeys AS (
SELECT TOP (@PageSize)SK.rn,SK.JobNumber,SK.CustID,SK.DateIn,SK.DateDue,SK.DateOut
FROM
Keys SK
WHERE
SK.rn > ((@PageNumber-1) * @PageSize)
ORDER BY
SK.JobNumber DESC)
SELECT SK.rn,J.JobNumber,J.OwnerID,J.Description,J.Client,SK.CustID,OrderNumber, CAST(DateAdd(d, -2, CAST(isnull(SK.DateIn,0) AS DateTime)) AS nvarchar) AS DateIn, CAST(DateAdd(d, -2, CAST(isnull(SK.DateDue,0) AS DateTime)) AS nvarchar) AS DateDue,CAST(DateAdd(d, -2, CAST(isnull(SK.DateOut,0) AS DateTime)) AS nvarchar) AS DateOut, Del_Method,Ticket#, InvoiceEmailed, InvoicePrinted, InvoiceExported, InvoiceComplete, JobStatus,j.MasterJobStatusID,j.MasterJobStatusTimestamp,js.MasterJobStatus
FROM SelectedKeys SK JOIN vw_Jobs_List J WITH (NOLOCK) ON j.JobNumber=SK.JobNumber JOIN tbl_SYSTEM_MasterJobStatus js WITH (NOLOCK) ON j.MasterJobStatusID=js.MasterJobStatusID
ORDER BY
SK.JobNumber DESC
END
- অন্যান্য কলাম বাছাইয়ের জন্য যদি বেলস