آموزش دستور cursor در sql server و نحوه کار با آن به زبانی ساده
صفحه اصلی / دوره‌های آموزشی / آموزش sql server 2019، از مقدماتی تا متخصص پایگاه داده / آموزش دستور cursor در 2019 sql server و نحوه کار با آن به زبانی ساده

آموزش دستور cursor در 2019 sql server و نحوه کار با آن به زبانی ساده

آموزش دستور cursor در sql server
0 تومان
براي خريد اين درس نياز است وارد سايت شويد. در صورت نداشتن حساب کاربري عضو شويد.

 آموزش کامل کار با Cursor ها در SQL Server 2019: 

 

در این جلسه می‌خواهیم در مورد sql server cursor صحبت کنیم. cursorها به ما کمک می‌دهند که تا بتوانیم سطر به سطر روی جداول حرکت کنیم و اگر می‌خواهیم مرحله به مرحله کدهایمان را اجرا کنیم. cursorها درواقع یک اشاره گر هستند که کنار سطرهای یک جدول یا یک محتوا قرار می‌گیرند و یکی یکی روی آن‌ها می‌توانند حرکت کنند و روی هر سطری که قرار بگیرند می‌توانیم به محتویات آن سطر دسترسی داشته باشیم. دو مدل cursor داریم : cursorهای معمولی و scroll cursorها.

برای درک بهتر این مبحث به مثال‌های زیر توجه کنید:

مثال:

Cursorها مانند متغیرها تعریف می‌شوند و نوع داده آن‌ها از جنس cursor می‌باشد.

 

شکل کلی دستور cursor:

در این مثال می‌خواهیم روی سطرهای جدول customers حرکت کنیم. برای اینکار سه متغیر برای فیلدهایی که می‌خواهیم اطلاعات آن را واکشی کنیم تعریف می‎کنیم و بعد یک cursor با نام cr تعریف می‌کنیم و با دستور for مشخص می‌کنیم که روی چه جدول و فیلدهایی می‌خواهیم حرکت کنیم. بعد از مشخص کردن جدول باید cursor را open و در انتها close کنیم و عملیاتی را که می‌خواهیم انجام دهیم بین دستور  open و close قرار می‎‌دهیم و در انتها با دستور Deallocate اشاره گری را که تعریف کرده‌ایم از حافظه پاک می‌کنیم. با دستور fetch  هم اطلاعات سطرهای جدول را واکشی می‌کنیم.

 

Declare @fname nvarchar(100),@lname nvarchar(100),@stateCode tinyint

Declare cr Cursor        

For(

          Select [FName],[LName],[StateCode]

          From Customers

)

Open cr

          fetch next from cr into @fname,@lname,@stateCode

          Print(@fname + ' '+ @lname + ' '+Cast(@stateCode as nvarchar(20)) )

Close cr

Deallocate cr

 

خروجی:

آموختن Cursor در sql server

 

 

در اینجا تنها یک سطر از جدول را نمایش دادیم. برای حرکت روی تمام سطرهای جدول باید از دستور while استفاده کنیم. برای آشنایی با دستور while دو مثال را باهم بررسی می‌کنیم:

 

شکل کلی دستور while:

در این مثال اعداد 1 تا 10 را چاپ می‌کند.

 

Declare @i int =1

While(@i<=10)

begin

          Print(@i)

    Set @i+=1

End

 

مثال: در این مثال هربار هر عدد که نوبتش باشد را در متغیر sum می‌ریزد و یک عدد به i اضافه می‌کند و در انتها sum را چاپ می‌کند.

 

Declare @i int =1

Declare @sum int =0

While(@i<=10)

begin

          Set @sum+=@i

    Set @i+=1

end

Print('Sum is : '+Cast(@sum as nvarchar))

 

خروجی:

خروجی دوم

 

 

مثال: در این مثال دستورات خود را در حلقه while قرار می‌دهیم تا سطر به سطر روی جدول حرکت کند و در انتها سطرها را نمایش دهد. صفت  @@FETCH_STATUS  یک مقدار برمی‌گرداند اگر مساوی 0 باشد یعنی هنوز به انتها جدول نرسیده است.

 

Declare @fname nvarchar(100),@lname nvarchar(100),@stateCode tinyint

Declare cr Cursor

For(

          Select [FName],[LName],[StateCode]

          From Customers

)

Open cr

          fetch next from cr into @fname,@lname,@stateCode

          while(@@FETCH_STATUS=0)

          begin

                   Print(@fname + ' '+ @lname + ' '+Cast(@stateCode as nvarchar(20)))

                   fetch next from cr into @fname,@lname,@stateCode

          end

 

Close cr

Deallocate cr

 

خروجی:

کامل کار با Cursor ها در SQL Server 2019

 

 

مثال: در این مثال می‌خواهیم سطرهای جدول را بروزرسانی کنیم و کنار محتوای فیلد Lname دو ستاره در سمت چپ و راست این فیلد قرار دهد.

با دستور for update of LName مشخص می‌کنیم که می‌خواهیم فیلد LName بروزرسانی شود.

با دستور where current of cr مشخص می‌کنیم ک عملیات آپدیت را روی هر سطری که cursor قرار دارد انجام دهد.

 

 

Declare @fname nvarchar(100),@lname nvarchar(100),@stateCode tinyint

Declare cr Cursor

For(

          Select [FName],[LName],[StateCode]

          From Customers

)

for update of LName

Open cr

          fetch next from cr into @fname,@lname,@stateCode

          while(@@FETCH_STATUS=0)

          begin

                   update Customers

                   Set LName='*'+LName+'*'

                   where current of cr

                   fetch next from cr into @fname,@lname,@stateCode

          end

Close cr

Deallocate cr

 

خروجی:

یادگیری Cursor ها در SQL Server 2019

 

 

Scroll cursor: این امکان را به ما می‌دهند که بتوانیم متنوع تر حرکت کنیم. cursorهای معمولی یکی یکی روی سطرها حرکت می‌کردند. اما scroll cursor کمک می‌دهد که مثلا از یک جای خاص شروع کنیم و به جای اینکه یکی یکی، چندتایی حرکت کنیم.

 

مثال: تعریف scroll cursor مانند cursor معمولی می‌باشد با این تفاوت که باید کلمه scroll را قبل از cursor قرار دهیم.

با دستور fetch absolute 5 from cr مشخص می‌کنیم که چندتایی روی سطرهای جدول حرکت کند به عبارتی میزان پرش را مشخص می‌کند و می‌توانیم از relative به جای absolute استفاده کنیم. relative موقعیت مکانی را نسبت به موقعیت فعلی مشخص می‌کند. در این مثال ابتدا 5 پرش انجام می‌دهد و یک سطر را چاپ می‌کند و و با دستور relative 3 پرش انجام می‌دهد و سطر بعدی را نمایش می‌دهد. مقادیر فیلد statecode هم جمع می‌کند و نمایش می‌دهد.

 

Declare @sum int =0

Declare @fname nvarchar(100),@lname nvarchar(100),@stateCode tinyint

Declare cr scroll Cursor

For(

          Select [FName],[LName],[StateCode]

          From Customers

)

Open cr

          fetch absolute 5 from cr into @fname,@lname,@stateCode

          while(@@FETCH_STATUS=0)

          begin

                   Set @sum+=@stateCode

                   Print(@fname + ' '+ @lname + ' '+Cast(@stateCode as nvarchar(20)))

                   print(@sum)

                   fetch relative 3 from cr into @fname,@lname,@stateCode

          end

         

Close cr

Deallocate cr

 

خروجی:

 

خروجی کار با Cursor ها در SQL Server 2019

 

امیدواریم که این آموزش، برای شما دوستان درسمنی عزیز مفید باشد، درصورت سوال و یا مشکل می‌توانید به انجمن پرسش و پاسخ مراجعه کنید. پیشنهادات و انتقادات خود را در بخش نظرات برای ما ارسال کنید
امید آنکه بیش از پیش موفق و مؤید باشید.

 

انجمن متخصصان پایگاه داده

 

جلسات دوره


                                                                      
مهدی عباسی
مدرس :

مهدی عباسی

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مطالعه بیشتر رزومه

نظر شما در تصمیم دیگران اثرگذار است.

لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.

برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.

نظرات دانشجویان

کاربر درسمن
نورا حامدی

عالی بود

نمایش بیشتر
آموزش sql server

495