You are on page 1of 9

1

Ti liu hng dn: Stored Procedure

Ti liu hng dn: Stored Procedure


Ngi thc hin
Hong Anh T

Ni dung
1

Gii thiu ................................................................................................................ 2

Stored Procedure c bn ........................................................................................ 2


2.1
To Stored Procedure ....................................................................................... 3
2.1.1 To bng SQL Server Management Studio (SSMS) ................................................ 3
2.1.2 To bng script ......................................................................................................... 4
2.2
Thc thi Stored Procedure ................................................................................ 4
2.2.1 Thc thi bng giao din SSMS ................................................................................. 4
2.2.2 Thc thi bng script ................................................................................................. 4
2.3
Thay i ni dung Stored Procedure ................................................................. 5
2.3.1 Thc thi bng script ................................................................................................. 5
2.4
Xa Stored Produre .......................................................................................... 5
2.4.1 Thc thi bng script ................................................................................................. 5

Tham s trong Stored Procedure ............................................................................ 5


3.1

Tham s u vo .............................................................................................. 5

3.2

Tham s u ra ................................................................................................. 6

Tr v gi tr trong Stored Procedure ..................................................................... 7


4.1

Tr v gi tr t lnh RETURN ............................................................................ 7

4.2

Tr v d liu t lnh SELECT............................................................................ 8

Kt hp Stored Procedure vi cc lnh T-SQL ........................................................ 9


5.1

ng dng thm sinh vin vo c s d liu ...................................................... 9

5.2

ng dng tr v danh sch sinh vin trong lp ................................................. 9

1.Gii thiu

1 Gii thiu
Ti liu ny hng dn thc hnh Stored Procedure trong H qun tr c s d liu
SQL Server. Ni dung chnh bao gm nhng phn sau:
Hng dn c php Stored Procedure trong SQL Server.
Cch gi, s dng li cc Stored Procedure to.
Mt s v d Stored Procedure.

2 Stored Procedure c bn
Khi chng ta to mt ng dng vi Microsoft SQL Server, ngn ng lp trnh T-SQL
(Transact-SQL) l ngn ng chnh giao tip gia ng dng v database ca SQL
Server. Khi chng ta to cc chng trnh bng T-SQL, hai phng php chnh c th
dng lu tr v thc thi cho cc chng trnh l:
-

Chng ta c th lu tr cc chng trnh cc b v to cc ng dng gi cc


lnh n SQL Server v x l cc kt qu.
Chng ta c th lu tr nhng chng trnh nh cc stored procedure trong
SQL Server v to ng dng gi thc thi cc stored procedure v x l cc
kt qu.

c tnh ca Stored-procedure trong SQL Server:


-

Stored Procedure l hm cho php truyn tham s vo v tr v gi tr.


Bao gm 1 tp cc lnh T-SQL x l 1 chc nng no trong c s d
liu.

Ta c th dng TSQL EXECUTE thc thi cc stored procedure. Stored procedure


khc vi cc hm x l(User-defined Function) l gi tr tr v ca chng khng cha
trong tn v chng khng c s dng trc tip trong biu thc.
Stored procedure c nhng thun li so vi cc chng trnh T-SQL lu tr cc b l:
-

Stored procedure cho php iu chnh chng trnh cho ph hp:


Chng ta c ch to stored procedure mt ln v lu tr trong database mt
ln, trong chng trnh chng ta c th gi n vi s ln bt k. Stored
procedure c th c ch r do mt ngi no to ra v s thay i ca
chng hon ton c lp vi source code ca chng trnh.
Stored procedure cho php thc thi nhanh hn: nu s x l yu cu mt
on source code Transact SQL kh ln hoc vic thc thi mang tnh lp i
lp li th stored procedure thc hin nhanh hn vic thc hin hng lot cc
lnh Transact-SQL. Chng c phn tch c php v ti u ha trong ln thc
thi u tin v mt phin bn dch ca chng trong s c lu trong b nh

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

2.Stored Procedure c bn

s dng cho ln sau, ngha l trong nhng ln thc hin sau chng khng
cn phi phn tch c php v ti u li, m chng s s dng kt qu c
bin dch trong ln u tin.
Stored procedure c th lm gim bt vn kt ng truyn mng: gi s
mt x l m c s dng hng trm lnh ca Transact-SQL v vic thc hin
thng qua tng dng lnh n, nh vy vic thc thng qua stored procedure
s tt hn, v nu khng khi thc hin chng ta phi gi hng trm lnh ln
mng v iu ny s dn n tnh trng kt mng.
Stored procedure c th s dng trong vn bo mt ca my: v ngi s
dng c th c phn cp nhng quyn s dng cc stored procedure ny,
thm ch h khng c php thc thi trc tip nhng stored procedure ny.

2.1 To Stored Procedure


2.1.1 To bng SQL Server Management Studio (SSMS)

Hnh 1. To Stored Procedure bng chng trnh SSMS


To bng giao din SSMS s pht sinh script to Stored Procedure sng, ta ch cn
thm ni dung vo trong phn thn hm.

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

2.Stored Procedure c bn
2.1.2 To bng script
C php n gin:
CREATE PROCEDURE procedure_name
@parameter1 data_type
[output] /*cc tham s*/,
@parameter2 data_type
[output]
AS
BEGIN
[khai bo cc bin cho x l]
{Cc cu lnh transact-sql}
END
GO

Phn [output] l phn c th c hoc khng xc nh loi tham s.


V d:
CREATE PROCEDURE XinChao
@hoTen
nvarchar(50)
AS
BEGIN
print N'Xin cho ' + @hoTen
END
GO
CREATE PROC Hello
AS
BEGIN
print N'Hello ' + @hoTen
END
GO

2.2 Thc thi Stored Procedure


2.2.1 Thc thi bng giao din SSMS
2.2.2 Thc thi bng script
S dng lnh EXECUTE (c th vit tt l EXEC) thc thi mt stored procedure.
EXECUTE procedure_name

parameter_value1, parameter_value2,..

EXEC procedure_name parameter_value1, parameter_value2, ...

V d:
EXEC XinChao N'Hip'

on lnh trn s to kt qu nh sau:

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

3.Tham s trong Stored Procedure

Hnh 2. Kt qu thc thi Stored Procedure XinChao


2.3 Thay i ni dung Stored Procedure
2.3.1 Thc thi bng script
ALTER PROCEDURE procedure_name
@parameter1 data_type
[output] /*cc tham s*/,
@parameter2 data_type
[output]
AS
BEGIN
[khai bo cc bin cho x l]
{Cc cu lnh transact-sql}
END
GO

Lc ny, SQL Server s thay th stored procedure c tn procedure_name bng 1


stored procedure mi c cng tn.
2.4 Xa Stored Produre
2.4.1 Thc thi bng script
DROP PROCEDURE

procedure_name

DROP PROC procedure_name

3 Tham s trong Stored Procedure


Stored Procedure l 1 hm c lu tr sng trong c s d liu. Hm ny c th c 2
loi tham s chnh: tham s u vo v tham s u ra.
3.1 Tham s u vo
y l loi tham s mc nh, cho php truyn cc gi tr vo trong stored procedure
h tr x l.
V d:
CREATE PROC Cong

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

3.Tham s trong Stored Procedure


@So1 int,
@So2 int
AS
BEGIN
declare @Kq int
set @Kq = @So1 + @So2
print @Kq
END
GO
exec Cong 1, 2

Kt qu on lnh trn s cho kt qu l 3

Hnh 3. Kt qu thc thi stored procedure cng 2 s nguyn


3.2 Tham s u ra
Tham s dng nhn kt qu tr v t stored procedure. S dng t kha OUTPUT
(hoc vit tt l OUT) xc nh tham s.
V d:
ALTER PROC Tru
@So1 int,
@So2 int,
@Kq int output
AS
BEGIN
set @Kq = @So1 - @So2
END
GO

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

4.Tr v gi tr trong Stored Procedure

DECLARE @test int


EXEC Tru 1, 2, @test output
PRINT @test

Kt qu in ra mn hnh l -1.

4 Tr v gi tr trong Stored Procedure


Ngoi cch s dng tham s u ra tr v gi tr. C th s dng RETURN tr
v gi tr t stored procedure hoc cc cu lnh SELECT khi truy vn d liu.
4.1 Tr v gi tr t lnh RETURN
Lnh RETURN c s dng tr v gi tr t stored procedure m khng cn s
dng tham s u ra. Gi tr tr v ny c mt s c im:
-

Gi tr tr v ch c th l s nguyn. Nu tr v cc loi gi tr khc th lc


thc thi stored procedure s bo li (ngoi tr 1 s kiu d liu c t ng
chuyn i sang kiu s nguyn nh:float, double,...).
Gi tr tr v mc nh l 0.
C th nhn gi tr tr v ny bng 1 bin.
Sau khi gi RETURN, stored procedure s tr v gi tr v kt thc x l.

V d:
CREATE PROC Test
@Lenh
int
AS
BEGIN
if (@Lenh = 1)
return 1
if (@Lenh = 2) begin
declare @float float
set @float = 2.6
return @float
end
if (@Lenh = 3) begin
declare @char varchar(50)
set @char = 'hello'
return @char
end
END
GO

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

4.Tr v gi tr trong Stored Procedure


declare @test float
EXEC @test = Test 3
print @test

Nu gi tr truyn vo l 1: stored procedure tr v gi tr 1.


Nu gi tr truyn vo l 2: stored procedure tr v gi tr 2.
Nu gi tr truyn vo l 3: stored procedure bo li khng th chuyn chui hello
thnh s nguyn.
Nu truyn cc gi tr khc: stored procedure tr v gi tr 0.
4.2 Tr v d liu t lnh SELECT
Mi lnh SELECT t trong stored procedure s tr v 1 bng.
CREATE PROC TestSelect
AS
BEGIN
SELECT * FROM SINHVIEN
SELECT * FROM LOP
END
GO
EXEC TestSelect

Kt qu in ra mn hnh s l:

Hnh 4. Kt qu thc hin stored procedure TestSelect

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

5.Kt hp Stored Procedure vi cc lnh T-SQL

5 Kt hp Stored Procedure vi cc lnh T-SQL


Cc stored procedure thng thng c to ra nhm gip thc hin mt s chc nng
cn thao tc trong c s d liu. Khi , ta cn phi kt hp nhiu lnh T-SQL thao
tc vi d liu nh (SELECT, INSERT, UPDATE, DELETE) v cc cu trc iu
khin (IF, WHILE, CASE,...).
5.1 ng dng thm sinh vin vo c s d liu
CREATE PROC ThemSinhVien
@mssv
varchar(10),
@hoTen
nvarchar(100),
@namSinh
int,
@danToc
nvarchar(20),
@maLop
varchar(10)
AS
BEGIN
IF(EXISTS(SELECT * FROM SinhVien s WHERE s.ma = @mssv)) BEGIN
PRINT N'M s sinh vin ' + @mssv + N' tn ti'
RETURN -1
END
IF(NOT EXISTS(SELECT * FROM Lop L WHERE L.ma = @maLop)) BEGIN
PRINT N'M s lp ' + @maLop + N' cha tn ti'
RETURN -1
END
INSERT INTO SinhVien(ma, hoTen, namSinh, danToc, maLop)
VALUES(@mssv, @hoTen, @namSinh, @danToc, @maLop)
RETURN 0 /* procedure t tr v 0 nu khng RETURN */
END
GO
DECLARE @kq INT
EXEC @kq = ThemSinhVien '0212005', N'Nguyn Vn A', 1987, 'Kinh',
'TH2002/01'
PRINT @kq

5.2 ng dng tr v danh sch sinh vin trong lp


CREATE PROC XuatDanhSachSinhVien
@maLop
varchar(10)
AS
BEGIN
IF(NOT EXISTS(SELECT * FROM Lop L WHERE L.ma = @maLop))
BEGIN
PRINT N'M s lp ' + @maLop + N' cha tn ti'
RETURN -1
END
SELECT * FROM Lop l where l.ma = @maLop
/*procedure lun tr v 0 nu khng RETURN*/
END
GO

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

You might also like