PDA

View Full Version : نمایش اطلاعات رکورد n ام



Farhad.B.S
پنج شنبه 23 بهمن 1382, 19:18 عصر
سلام ،
چطور میشه با استفاده از یه cursor ، اطلاعات یه رکورد (فقط یک رکورد) رو نشون داد ؟
مثلا نمایش اطلاعات فیلد 1 از رکورد n م ؟

ممنون.

Mahdavi
جمعه 24 بهمن 1382, 10:16 صبح
دوست عزیز بدون cusor هم میتونی :
اولا یه select top n باید داشته باشی و بعد از این مجموعه باز یه select top 1 باید داسته باشی . چیزی شبیه به این :


select top 1 *
from (select top 10 from ABCD)

اگه n واسط معلوم نیست و هرسری عوض میشه باید query فوق رو بسازی و بعد exec کنی :


declare @st varchar(1000)
declare @N varchr(5)
set @N = 10
set @st = "select top 1 from ( select top " + @N+ " * from ABCD )"
exec (@ST)

Farhad.B.S
جمعه 24 بهمن 1382, 17:45 عصر
ممنون ،فکر میکنم درست منظورم رو نرسوندم ،
دلیل من برای استفاده از کورسور اینه که فقط یه رکورد select بشه. به دلیل بالا بودن حجم دیتابیس و تعداد رکورد ها ، با روش بالا سرعت گرفتن جواب بسیار میاد پایین .
به عنوان مثال برای گرفتن اطلاعات رکورد 10000 ابتدا یه nested select خواهیم داشت که توسطش این 10000 رکورد انتخاب میشن و بعد از اون جواب رو خواهیم گرفت.

Mahdavi
جمعه 24 بهمن 1382, 23:07 عصر
دوست عزیز
در cursor هم شما مجبورید روی یک جدول اسکن کنید که خود زمانبره . اما در روش فوق میتونید رو یه رکورد ایندکس بزنید و از order by استفاده کنید . اینجوری مشکل سرعت هم نخواهید داشت.
اما اگه بخواهید همیشه چنین درخواستهایی داشته باشید میتونید یک رکورد عددی داشته باشید. روی اون ایندکس از نوع cluster تعریف کنید . در اینصورت این عدد جایگاه اون رکورد خواهد بود

Farhad.B.S
شنبه 25 بهمن 1382, 18:10 عصر
با تشکر ، کورسور جوابگو بود و از لحاظ سرعت هم مشکلی نداشت :


DECLARE b SCROLL CURSOR FOR SELECT * FROM [Test].[dbo].[tblUsers]

OPEN b

FETCH ABSOLUTE 10 FROM b

CLOSE b
DEALLOCATE b