View Full Version : نمایش اطلاعات رکورد n ام
Farhad.B.S
پنج شنبه 23 بهمن 1382, 20:18 عصر
سلام ،
چطور میشه با استفاده از یه cursor ، اطلاعات یه رکورد (فقط یک رکورد) رو نشون داد ؟
مثلا نمایش اطلاعات فیلد 1 از رکورد n م ؟
ممنون.
Mahdavi
جمعه 24 بهمن 1382, 11: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, 18:45 عصر
ممنون ،فکر میکنم درست منظورم رو نرسوندم ،
دلیل من برای استفاده از کورسور اینه که فقط یه رکورد select بشه. به دلیل بالا بودن حجم دیتابیس و تعداد رکورد ها ، با روش بالا سرعت گرفتن جواب بسیار میاد پایین .
به عنوان مثال برای گرفتن اطلاعات رکورد 10000 ابتدا یه nested select خواهیم داشت که توسطش این 10000 رکورد انتخاب میشن و بعد از اون جواب رو خواهیم گرفت.
Mahdavi
شنبه 25 بهمن 1382, 00:07 صبح
دوست عزیز
در cursor هم شما مجبورید روی یک جدول اسکن کنید که خود زمانبره . اما در روش فوق میتونید رو یه رکورد ایندکس بزنید و از order by استفاده کنید . اینجوری مشکل سرعت هم نخواهید داشت.
اما اگه بخواهید همیشه چنین درخواستهایی داشته باشید میتونید یک رکورد عددی داشته باشید. روی اون ایندکس از نوع cluster تعریف کنید . در اینصورت این عدد جایگاه اون رکورد خواهد بود
Farhad.B.S
شنبه 25 بهمن 1382, 19:10 عصر
با تشکر ، کورسور جوابگو بود و از لحاظ سرعت هم مشکلی نداشت :
DECLARE b SCROLL CURSOR FOR SELECT * FROM [Test].[dbo].[tblUsers]
OPEN b
FETCH ABSOLUTE 10 FROM b
CLOSE b
DEALLOCATE b
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.