18. ខ. Case statement៖
Syntax1:
Set @VarName = Case Expression
When Value1 Then returnvalue1
When Value2 Then returnvalue2
…
When ValueN Then returnValueN
Else
returnvalue
End
18
19. ឧទហរ ៍ ៖
Declare @m tinyint, @y smallint, @days tinyint
Set @m = MONTH(GETDATE())
Set @y = YEAR(GETDATE())
If (@m=2)
Begin
If (@y%4=0 And @y%100<>0) Or @y%400=0
Set @days = 29
Else
Set @days = 28
End
19
20. Else
Begin
Set @days = Case @m
When 4 Then 30
When 6 Then 30
When 9 Then 30
When 11 Then 30
Else
31
End
End
Print 'This month has ' + Convert(varchar(3), @days) + ' days'
20
21. Syntax2:
Case When Condition1 Then returnvalue1
When Condition2 Then returnvalue2
…
When ConditionN Then returnvalueN
Else
returnvalue
End
ឧទហរ ៍ ៖តាមរយៈTable ង្
ា ោះtbStudent, tbSubject និ្
tbExam ងយើ្ោចសរងសរT-SQL រន៊ុ្ការរំ រ់និងទទសសំរាប់
ពិនទ៊ុរបស់និសេិរមា
ន រ់ៗែូចខា្ងត្កាម៖
21
22. Select StuName, Sex, SubjectName, FirstExamScore,
CaseWhen FirstExamScore<50Then 'F'
When FirstExamScore<60Then 'E'
When FirstExamScore <70Then 'D'
When FirstExamScore <80Then 'C'
When FirstExamScore <90Then 'B'
Else
'A'
End As FirstGrade
From tbSubject B Inner Join(tbExam E Inner Join tbStudent S On
E.StuID=S.StuID) On B.SubjectID=E.SubjectID
22
23. គ. While៖ បល៊ុរនន Statement(s) ត្រូវែំង ើ រការសារច៊ុោះសារ
ង ើ្រន៊ុ្ខ ៈដែល Condition ពិរ។
Syntax
While (Condition)
Begin
Statement(s)
End
23
29. ឧទហរ ៍ ៖ តាមរយៈតារា្ tbCustomer ងយើ្ោចបង្កើរ
Stored Procedure សំរាប់ដសវ្ររព័រ៌មានរបស់អរិេិជនងៅតាម
រំនលរបស់ CusID រន៊ុ្ត្ទ្់ត្ទយែូចខា្ងត្កាម៖
Create Procedure spSearchCustomer (@id int) As
Begin
Select * From tbCustomer Where CusID = @id
End
ងយើ្ោចងៅStored Procedure ងនោះមរែំង ើ រការរន៊ុ្
ត្ទ្់ត្ទយែូចខា្ងត្កាម៖
Exec spSearchCustomer 1
29
30. + Stored Procedure សំរាប់បន្ថែម Record ថ្មីចូលក្នុង
Table មាថទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Syntax:
Create Procedure ProcedureName ParameterList As
Begin
T-SQL
Insert Into TableName (FieldName1,…, FieldNameN)
Values (@Par1,..., @ParN)
End
30
31. ឧាហរណ
៍ ៖ ក្យីងមាថតារាងមួយគឺ
tbCustomer(CusID, CusName, Phone, ContactAddress)
int varchar(30) varchar(20) varchar(200)
ឧបមាថា CusID ទ្រូវបាថក្ំណរ់ក្ោយក្ក្ីថរំលល១ជាសវ័យទ្បវរតិ
ក្ ោះក្យីងោចបក្ងកីរ Stored Procedure សំរាប់បន្ថែម Record ថ្មីចូល
ក្ៅក្នុងតារាងក្ថោះតាមទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Procedure spCustomerInserted @cn varchar(30),
@ph varchar(20), @ad varchar(200) As
Begin
Insert Into tbCustomer(CusName, Phone,
ContactAddress) Values(@cn, @ph, @ad)
End
31
32. + Stored Procedure សំរាប់ន្ក្រំលលរបស់ Field មួយឬក្ទ្ចីថក្នុង
Table មួយក្ៅតាមរំលលរបស់ Primary Key៖
Syntax:
Create Procedure ProcedureName ParameterList As
Begin
T-SQL
Update TableName Set FieldName2 = @Par2, …,
FieldNameN = @ParN Where PKFieldName = @Par1
End
32
33. ឧាហរណ
៍ ៖ តាមរយៈតារាង tbCustomer ក្យីងោចបក្ងកីរ
Stored Procedure សំរាប់ន្ក្ន្ទ្បព័រ៌មាថរបស់អរិថ្ិជថក្ៅ
តាមរំលលរបស់ CusID ក្នុងទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Procedure spCustomerUpdated @id int, @cn
varchar(30), @ph varchar(20), @ad varchar(200) As
Begin
Update tbCustomer Set CusName = @cn,
Phone = @ph, ContactAddress = @ad
Where CusID = @id
End
33
34. + Stored Procedure សំរាប់លុប Record ក្ចញពី Table
មួយក្ៅតាមរំលលរបស់ Primary Key៖
Syntax:
Create Procedure ProcedureName @Par1 Datatype As
Begin
T-SQL
Delete From TableName Where PKFieldName = @Par1
End
34
35. ឧាហរណ
៍ ៖ តាមរយៈតារាង tbCustomer ក្យីងោចបក្ងកីរ
Stored Procedure សំរាប់លុបព័រ៌មាថរបស់អរិថ្ិជថក្ៅតាម
រំលលរបស់ CusID ក្នុងទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Procedure spCustomerDeleted @id int As
Begin
Delete From tbCustomer Where CusID = @id
End
ក្យីងោចក្ៅ Stored Procedure ក្ថោះមក្ដំក្ណ
ី រោរ សំរាប់
លុបព័រ៌មាថរបស់អរិថ្ិជថន្ដលមាថ CusID = 1 ក្យីងទ្រូវអថុ
វរតតាមទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Exec spCustomerDeleted 1
35
36. ១.៦. Function ៖
ក្. Function ន្ដល Return រំលលជា Scalar៖
គឺជា Function ន្ដល Return រំលលជាចំថួថក្លខ អក្សរឬរំក្រៀប
លថរួអក្សរជាក្ដីម។ ក្ដីមបីបក្ងកីរ Function ទ្បក្េរក្ថោះក្យីងទ្រូវអថុវរត
តាមទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Function FunctionName (ParameterList) Returns
Datatype As
Begin
T-SQL
Return Expression
End
ន្ដល Expression ោចជាចំថួថក្ថ្រ អក្ថ្រឬក្ក្ថោមគណ ។
36
37. ឧាហរណ
៍ ៖ ក្យីងមាថតារាងមួយគឺ
tbCustomer(CusID, CusName, Phone, ContactAddress)
int varchar(30) varchar(20) varchar(200)
ក្យីងោចបក្ងកីរ Function សំរាប់ាញយក្ក្្
ម ោះរបស់អរិថ្ិជថក្ៅតាម
រំលលរបស់ CusID ក្នុងទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Function getCusName (@id int) Returns
varchar(30) As
Begin
Declare @cn varchar(30)
Select @cn = CusName From tbCustomer
Where CusID = @id
Return @cn
End
37
38. ខ. Function ន្ដល Return ជា Table៖
ក្ដីមបីបក្ងកីរ Function ន្ដល Return ជា Table ក្ ោះក្យីង
ទ្រូវអថុវរតតាមទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Function FunctionName (ParameterList)
Returns Table As
Begin
T-SQL
Return (Select Statement)
End
ចំណំ៖ ទ្បសិថក្បីក្ៅក្នុងដងខលួថរបស់ Function មាថ Return
Statement ន្រមួយគរ់ ក្ ោះក្យីងមិថទ្រូវដាក្់ Begin End ក្ ីយ។ 38
39. ឧាហរណ
៍ ៖ ក្យីងមាថតារាងមួយគឺ
tbCustomer(CusID, CusName, Phone, ContactAddress)
int varchar(30) varchar(20) varchar(200)
ក្យីងោចបក្ងកីរ Function សំរាប់ាញយក្ព័រ៌មាថរបស់អរិថ្ិជថក្ៅ
តាមរំលលរបស់ CusID ក្នុងទ្រង់ទ្ាយដូចខាងក្ទ្ោម៖
Create Function searchCustomer (@id int) Returns Table
As Return (Select * From tbCustomer Where CusID = @id)
ក្ដីមបីក្ៅ Function ខាងក្លីក្ថោះមក្ដំក្ណ
ី រោរ សំរាប់ន្សវងរក្ព័រ៌មាថ
របស់អរិថ្ិជថន្ដលមាថ CusID = 1 ក្ ោះក្យីងទ្រូវអថុវរតតាមទ្រង់ទ្ាយ
ដូចខាងក្ទ្ោម៖
Select * From dbo.searchCustomer(1)
39
43. ក្ដីមបីាញរលមលរបស់ Field ាំងឡាយទ្រង់ Record
ន្ដល CursorVarName ក្ំពុងចងអុលក្ៅសាុក្ក្នុងអក្ថ្រមួយ
ចំថួថន្ដលក្យីងបាថទ្បោសរួចក្ហីយ ក្ ោះក្យីងទ្រូវអថុវរត
តាម Statement ដូចខាងក្ទ្ោម៖
▪ Fetch First From CursorVarName Into
@Var1,…,@VarN
▪ Fetch Next From CursorVarName Into
@Var1,…,@VarN
▪ Fetch Prior From CursorVarName Into
@Var1,…,@VarN
▪ Fetch Last From CursorVarName Into
@Var1,…,@VarN
43
49. Group Name Fields: មាថ រីសាុក្ Field ណមួយ ន្ដល
ទ្រូវបាថក្ំណរ់ក្្វីជា Group Header/Footer។
Special Fields: មាថ រីសាុក្ Fields ពិក្សសមួយចំថួថ
ន្ដលមាថទ្ាប់របស់ Crystal Report ដូចជា Page
Number, Record Number,…។
49