Database Programming On SQL Server
Database Programming On SQL Server
T-SQL Programming
Stored-procedure
Functions
Triggers
Cursors
tblLocation
locNum
tblDependent
tblWorksOn depName
locName
empSSN empSSN
proNum depSex
workHours depBirthdate
depRelationship
tblDepLocation
depNum
locNum
tblProject tblEmployee
proNum empSSN
proName empName
tblDepartment
locNum depNum empAddress
depNum depName empSalary
mgrSSN empSex
mgrAssDate empBirthdate
depNum
supervisorSSN
1. Variables
◦ Declare a variable
DECLARE @local_variable [AS] data_type [=initialvalue] , …
◦ Example
DECLARE @empName NVARCHAR(20), @empSSN AS DECIMAL,
@empSalary DECIMAL=1000
1. Variables (cont)
◦ Assign a value into a variable : using SET or SELECT
SET @empName=N’Mai Duy An’
SELECT @empSalary=2000
UPDATE tblEmployee
SET @empName=empName, @empSalary=empSalary
WHERE empName=N'Mai Duy An’
1. Variables (cont)
◦ Display value of a variable : using PRINT or SELECT
PRINT @empName
SELECT @empSalary
2. Flow-control statement
Statement Blocks: Begin…End
Conditional Execution:
IF ... ELSE Statement
CASE ... WHEN
Looping: WHILE Statement
Error handling:
@@ERROR
TRY … CATCH
◦ Example
DECLARE @depNum DECIMAL, @str NVARCHAR(30)
SET @str=
CASE @depNum
WHEN 1 THEN N'Phòng ban số 1'
WHEN 2 THEN N'Phòng ban số 2'
ELSE N'Mã phòng ban khác 1, 2'
END
PRINT @str
SELECT @womanDayBonus =
CASE empSex
WHEN 'F' THEN 500
WHEN ‘M' THEN 0
END
FROM tblEmployee
WHERE empSSN=30121050004
PRINT @womanDayBonus
IF @@ERROR<>0
BEGIN
ROLLBACK TRANSACTION
PRINT @@ERROR
END
COMMIT TRANSACTION
If statement
IF <condition> THEN
◦ Ends with keyword END IF
<statement list>
◦ If-statement nested within the
ELSEIF <condition> THEN
else-clause are introduced with <statement list>
the single word ELSEIF
ELSEIF
…
ELSE
<statement list>
END IF;
Example
loop1: LOOP
...
LEAVE loop1;
...
END LOOP;
WHILE <condition> DO
<statement list>
END WHILE;
Database
Database Database
Server Server
Internet
Client Client
◦ Maintainability
◦ Precompiled Execution
◦ Improved Security
Example 1:
◦ Create stored procedure to list all projects
◦ Create stored procedure to change the project’s
name
◦ Create stored function to return the name of
project
//demo
//demo
//demo
Disable a trigger
DISABLE TRIGGER <trigger_name> ON <table_name>
Enable a trigger
ENABLE TRIGGER <trigger_name> ON <table_name>
--test
INSERT INTO tblEmployee(empSSN, empName, empSalary, depNum,
supervisorSSN)
VALUES (30121050345, N'Nguyễn Văn Tý', 10000, 1,
30121050037);