سلام مجدد

 

  بااستفاده از دستور UPDate  رکوردهای اشاره شده تغییر خواهند کرد و در شکل کلی ذیل مورد استفاده قرار می گیرد.

]  Set  نام مستعار [ AS ] [       نام جدول     UpDate

,  مقدار 1  =  فیلد 1

,  مقدار 2  = فیلد 2

 


]  عبارت شرطی   [ Where

 

دراین حالت هر فیلد با مقدار تعیین شده که بانوع فیلد تناسب دارد جانشین خواهد شد و این عملیات تا زمانیکه شرط صادق باشد ادامه می یابد. بدیهی است که درصورت عدم ارائه شرط کلیه رکوردهای جدول تحت تاثیر تغییرات واقع خواهند شد که شایسته است دقت بیشتری بعمل آید در واقع در مواقعی که قرار است یک رکورد خاص تحت تغییرات قرار گیرد فیلد PK  در جدول موردنظر بهترین کاندیدا جهت عبارت شرطی است.

  بااستفاده از دستور UpDate  مقدار اطلاعات پرسنلی شخص با شماره کارمندی 200  را تغییر دهید.

UpDate   Person  Set

´ ,رضائی پورPFamily  = ´

UnitID = 1

Where  PrsID = 200

 

 

که در این مثال ستونهای نام خانوادگی و واحد سازمانی تحت تغییرات برای شخص به کارمندی 200  قرار گرفته اند.

 

  بااستفاده از دستور UpDate  حقوق کارکنان را %20  افزایش دهید.

اگر فرض کنیم در جدول پرسنلی فیلد Price  حقوق کارمندان باشد بنابراین خواهیم داشت:

 

UpDate  Person  Set

Price = Convert ( BigInt , Price 1.2 )

 

  فرض کنید که کد تهران = 1 و کد اصفهان = 2  باشد دستوری بنویسیدکه حقوق کارکنان دو شهر را %25  افزایش دهد:

 

UpDate  Person  Set  Price = Convert (BigInt , Price 1.25 )

( 39 )

 

 
Where  CityID In (1,2)

  دستوری بنویسید که حقوق کارکنان هر واحد را به نسبت درصد جمعیت هر شهر تغییر دهد.

 

UpDate  Person  P  Set  Price = Price ( 1 +

( Select  Isnull (C.PoPulate ,0) Form  Unit U

Left  Join City  C On (C.CityID = U.CityID)

Where  U.UnitID = P.UnitID)

 
 
 


( Select  Sum (PoPulate )  From  City ) )

 

 

 

همانطور که مشاهده می گردد ابتدا برای هر شخصی به واحد سازمانی و از آنجا به شهری که آن واحد قرار دارد ارجاع داده می شد تا جمعیت آن شهر تعیین گردد و در مخرج کسر نیز جمعیت کل شهرستانها محاسبه می گردد در واقع فرمول ذیل مورد محاسبه قرار گرفته است:

 

                                                                                      حقوق قبلی = حقوق جدید

 

 

 

از طرفی مشاهده می گردد که مخرج کسر یعنی جمعیت کل شهرستانها برای هر فرد در حال محاسبه است که فرآیند به روزرسانی را کندتر خواهد کرد بدین منظور اگر از یک SP  استفاده شود می توان افزایش سرعت را ایجاد نمود بنابراین خواهیم داشت:

 

Create  Proc  NewPrice AS

Declare   @SumPoP  BigInt

Set   @SumPoP = ( Select  Sum (PoPulate )  From City )

Begin  Tran

UpDate  Person  P  Set  Price = Price ( 1 +

( Select  Isnull (C.PoPulate  , 0 )  From  Unit  U

Left  Join  City  C  On ( C.CityID = U.CityID)

Where  U.UnitID = P.UnitID ) / @ SumPoP )

Commit  Tran

خب تا اینجا امیدوارم که سخت نبوده باشه.

در پست بعد دستور Delete رو خواهم گفت. همچنان با ما باشید