کرسر در پایگاه داده چیست

ایجاد کرسر در sql server

توسط admin | گروه sql | 1396/08/07

نظرات 0

 کرسرها(CURSORS)  درSQL-Server

مقدمه
     باتوجه به اينکه خروجي دستورSELECT معمولايک مجموعه (جدول) بوده ودرزبان هاي برنامه نويسي ، امکان کارکردن باجداول وجودندارد، به کمک کرسرها امکان دسترسي به رکوردهاي يک جدول به شکل رکوردبه رکورد وجوددارد .
تعریف کرسر cursor در sql server
 قبل از معرفي نحوه تعريف يک کرسر و خصوصيات آن با توجه به زياد بودن دسته بندي هاي مختلف کرسرها برحسب خصويات مختلف آن بهتر است ابتدا به معرفي بعضي ويژگي هايي کرسر ها بپردازيم :
1-  طول عمر(حوزه)کرسر:
    کرسر هايي که ساخته مي شوند به صورت پيش فرض تا آخر پايدار بودن اتصال جاري به سرور باقي مي مانند مگر اين          که صراحتا از بين برده شونديا توسط عبارتDEALLOCATE غيرفعال شوند.
2-  قدرت تغيير و به روز آوري جداولي که کرسر روي آن ها حرکت مي کند:
     به اين معني که  بعد از اين که کرسري ساخته شد آيا مي تواند تغييري در تاپلي که روي آن قرار دارد ايجاد کنديا اين که     فقط حق خواندن ازاين تاپل را دارد.
3-  نحوه حرکت کرسر روي تاپل هاي جدول :
     اين که آيا کرسر اين قدرت را دارد که مثلا بتواند علاوه بر جلو رفتن به سمت عقب هم حرکت کنديا اين که به ابتداي       جدول پرش کند.
4-  حساسيت به تغييرات ايجاد شده در جدول :
    به اين معني که آياپس ازبازکردن کرسر، اگرتغييراتي درجداول منبع کرسربه وجودبيايد،درکرسرتاثير      دارد ياندارد .
5- سرعت ايجاد و حرکت کرسر:
      اين خصوصيت يک خصوصيت تر کيبي است و با توجه به اين که يک کرسر کدام يک از خصوصيات موارد قبل را داشته باشد تعيين مي شود .مثلا مسلما کرسري که هم رو به جلووهم روبه عقب حرکت مي کند از کرسري که تنها رو به جلو مي رود کند تر است.

نحوه استفاده از کرسرها
براي استفاده از يک کرسر بايد قدم هاي زير را طي نمود :
1- تعريف کردن کرسر: تعريف کرسربه شکل کلي زيرانجام مي شود :
DECLARE cursor_name CURSOR 
[ LOCAL | GLOBAL ] 
[ FORWARD_ONLY | SCROLL ] 
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] 
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] 
FOR select_statement 
[ FOR UPDATE [ OF column_name [ ,...n ] ] ] 
بررسي بعضي پارامتر هاي تعريف فوق :
کلمه کليدي Local ، ميدان استفاده از کرسر را به تابع ،رويه يا رهانايي که رويه در آن تعريف شده محدود مي کند .کلمه کليدي  Globalبه اين معناست که کرسر تا  پايدار بودن اتصال جاري به سرور باقي مي ماند مگر اين که صراحتا از بين برده شود .
: FORWARD_ONLY به اين معني است که کرسر مي تواند تنها روبه جلو حرکت کند در حالي که SCROLL بودن کرسر