استفاده از اشاره گر (Cursor) در SQL

شنبه 3 بهمن 1394

در این مقاله می خواهیم در مورد اشاره گرها در sql صحبت نماییم، مزایا و معایب آن را صحبت کنیم و یک نمونه از آن را برای شما نمایش دهیم، و دلایل استفاده از آن را توضیح دهیم.

استفاده از اشاره گر (Cursor) در 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 2017

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید