در قسمت دهم آموزش SQL Server ،مبحث حلقه ها در SQL Server را به شما آموزش دادیم. دراین قسمت قصد داریم دستوراتی بنویسیم که همزمان چندکار را انجام دهند و پیش زمینه ای برای مبحث Stored Procedure ها باشند.
همانطور که در ابتدای پست گفتیم میخواهیم دستوراتی بنویسیم که همزمان چندکار را انجام دهد و پیش زمینه ای برای تدریس Stored Procedure ها باشند.
به دستورات زیر دقت کنید :
Declare @code int=25 Declare @tedad int =1 Declare @Nameketab nvarchar(10)='tarahi algoritm' Declare @nevisande nvarchar(20)='gav' Declare @Idgroup int =1 if(Exists (Select * from Tbl_Ketab where Code_Ketab=@code)) begin Update Tbl_Ketab set Name_Ketab=@Nameketab , Nevisande=@nevisande , ID_Group=@Idgroup where Code_Ketab=@code end else begin insert Tbl_Ketab (Name_Ketab,Nevisande,ID_Group,tedad) values(@Nameketab,@nevisande,@Idgroup,@tedad) end
حال برای توضیح خطوط بالا میتوان گفت که ما ابتدا پنج متغیر را به دلایلی ساخته ایم که در ادامه متوجه خواهید شد سپس یک شرط ایجاد شده که میگوید اگر مقدار متغیر @code با یکی از مقادیر فیلد Code_Ketab در جدول کتاب برابر بود وجود داشت(کلمه Exists به معنای وجود داشتن یا برقرار بودن شرط ذکر شده میباشد) دستورات بعدی که در بدنه If وجود دارد انجام شود و اگر شرط برقرار نبود نیز دستورات در بدنه Else اجرا شوند.
حال به بررسی هردو بدنه ها میپردازیم بدنه ای که در صورت برقرار بودن شرط که با Begin و End شروع و پایان میپذیرد میگوید در جدول کتاب مقادیر فیلد Name_Ketab را برابر با متغیری که در بالا نام گزاری و مقدار دهی شده به نام @code قرار دهد و همچنین فیلدهای Nevisande و ID_Group نیز با متغیر های مربوط به خود مقداردهی شوند و همچنین شرط where Code_Ketab=@code نیز باید نوشته شود چون اگر این شرط را ننویسیم کل چدول مقادیرشان تغییر میکند و این مطلوب ما نیست پس حتما این شرط را رعایت کنید.
بدنه ای که در صورت برقرار نبودن شرط اجرا میشود و پس از دستور Else با همان کلمات کلیدی Begin و End نوشته شده اند میگویند که یک رکورد شامل فیلدهای ذکر شده با مقادیر تعریف شده ایجاد کن به عبارت دیگر در صورت پیدا نشدن مقدار متغیر @code که به همان فیلد کد کتاب اشاره دارد در جدول کتاب پیدا نشد یک رکورد جدید با مقادیر متغیرهای @nameketab و @nevisande و @idgroup و @tedad را ایجاد میکند
*توجه داشته باشید که این فیلد هایی که ذکر شده برای ویرایش و ایجاد کردن فیلدهایی هستند که گزینه Allow Null انها هنگام ایجاد تیک دار نشده بدین معنی که نمیتوانند خالی بمانند اما فیلد های دیگر جدول مثل قفسه و قیمت و .. خاصیت Allow Null را دارند و میتوانند خالی بمانند و برای راحتی کار نیز ما انهارا در این کوری استفاده نکرده ایم*
*نکته دیگری که باید در نظر بگیرید این است که همانگونه که مشاهده میکنید ما در هر دو دستور Update و Insert از فیلد Code_Ketab نامی نبرده و استفاده نکرده ایم چون این فیلد هنگام ایجاد جدول به صورت Identity تعریف شده و طبق نکات گفه شده در اموزش های قبل نمیتوان در این فیلد تغییری ایجاد نمود*
پس از نوشتن و اجرای این دستورات نتیجه مطلوبی خواهید گرفت.