استفاده از اشاره گر (Cursor) در SQL
شنبه 3 بهمن 1394در این مقاله می خواهیم در مورد اشاره گرها در sql صحبت نماییم، مزایا و معایب آن را صحبت کنیم و یک نمونه از آن را برای شما نمایش دهیم، و دلایل استفاده از آن را توضیح دهیم.
اشاره گر یک شی پایگاه داده، برای بازیابی اطلاعات از نتیجه ی یک ردیف در یک زمان را تعیین می کند، به جای دستورات TSql از عملگرها که همه ی ردیف ها نتیجه ی آن را در یک زمان تنظیم می نماید، ما از اشاره گر استفاده می نماییم.
ما از اشاره گر زمانی استفاده می کنیم، که بخواهیم سطرهای جدول داخل پایگاه داده ی خود را به روز رسانی نماییم.
اشاره گر با مفهوم حلقه کار می نماید، یکی از استفاده های اشاره گر در sql مجموعه ای از ردیف ها را با یک id که برای شناسایی یک ردیف فعلی است تعریف می نماید.
چرا و چه زمانی ما از اشاره گر استفاده می نماییم؟
زمانی که ما می خواهیم رکوردهای یک جدول را بر گردانیم، و یا یک سری اطلاعات با یک منطق خاص و رابط خاصی را به جدول خودمان اضافه نماییم، معمولا اشاره گرها برای حلقه ی for و یا while استفاده می شود.
حالا مزایای اشاره گر ها چیست؟
اشاره گر ها می توانند سریع تر از حلقه ها باشند اما آن ها می توانند سربار بیشتری را تحمل کنند.
مورد دیگر اعتبار سنجی برای هر ردیف است که شما می توانید عملیات را برای هر ردیف انجام دهید.که از یک نوع داده برای تعریف متغییر چند value است.
اشاره گر ها می توانند سریع تر از حلقه ها باشند اما هزینه ی سربار بیشتری را تحمل می نمایند.
معایب:
مصرف منابع بیشتر به دلیل استفاده از اشاره گر در sql فضای حافظه از سیستم را برای فرآیند های دیگر اشغال می نماید.
هر زمانی که یک سطر اطلاعات آن با استفاده از اشاره گر واکشی شود، نیاز به پهنای باند بیشتر برای اجرای یک عبارت در sql است مانند عملگر select یا delete
یک نمونه از اشاره گرها در sql:
DECLARE @fName varchar(50), @lName varchar(50) DECLARE use-cursor-in-sqlName CURSOR--Declare use-cursor-in-sql LOCAL SCROLL STATIC FOR Select columnname1, columnname2 FROM myTable OPEN use-cursor-in-sqlName--open the use-cursor-in-sql FETCH NEXT FROM use-cursor-in-sqlName INTO @columnname1, @columnname2 WHILE @ @FETCH_STATUS = 0 BEGIN --here your code or logic like(insert / update / delete) FETCH NEXT FROM use-cursor-in-sqlName INTO @columnname1, @columnname2 END CLOSE use-cursor-in-sqlName--close the use-cursor-in-sql DEALLOCATE use-cursor-in-sqlName--Deallocate the use-cursor-in-sql
قدم اول:یک جدول و یک view از جدول ایجاد نمایید.
قدم دوم :استفاده از cursor
قدم سوم:به روز رسانی داده های جدول
- SQL Server
- 13k بازدید
- 5 تشکر