You are on page 1of 4

.

M͙t s͑ khái niʄm vɾ Stored Procedures( Nhͯng thͧ tͥc lưu)

- M͙t thͧ tͥc lưu là m͙t tɪp hͣp các câu lʄnh SQL chưa biên dʈch

- Stored procedure thͱc thi va hoàn thành các lʄnh logic thông qua các ͩng dͥng khác nhau
, các câu lʄnh SQl luôn đưͣc kiʀm tra m͙t lɤn tɞi đây.

- M͙t khi Stored procedure đưͣc thiɼt lɪp thì nhͯng ͩng dͥng cɤn thiɼt tương tͱ chʆ cân
thͱc hiên lɞi Store procedure

- Sͭ dͥng Stored procedure đʀ quɠn lý các đăng nhɪp và Stored procedure hʄ th͑ng đʀ
quɠn lý CSDL ngư͝i dùng .

- Ngư͝i phát triʀn CSDL hoɴc ngư͝i quɠn trʈ CSDL viɼt ra các thͧ tͥc lưu đʀ thͱc thi các
nhiʄm vͥ quɠn trʈ thông thư͝ng hoɴc áp dͥng cho nhͯng CSDL phͩc tɞp. Thͧ tͥc lưu chͩa
các câu lʄnh thao tác v͛i dͯ liʄu hoɴc các câu lʄnh nhɪn dͯ liʄu trɠ vɾ.

II . Phân loɞi Thͧ tͥc Lưu


‡ Thͧ tͥc lưu hʄ th͑ng đɾ cɪp đɼn nhͯng phương pháp quɠn trʈ dư liʄu và cɪp nhɪt thông
tin vào các bɠng .

‡ Thͧ tͥc lưu do ngư͝i dùng CSDL đʈnh nghĩa.


III. Các lͣi ích cͧa Nhͯng thͧ tͥc lưu
Lͣi ích cͧa viʄc sͭ dͥng các thͧ tͥc lưu :
Tăng cư͝ng t͑c đ͙ sͭ lýî
Truy cɪp dͯ liʄu nhanh chóng hơnî
Lâp trình môđunî
Tính nhɢt quánî
Tiɼt kiêm th͝i gianî
Dʂ dàng quɠn ly và g͡ r͑iî
Nâng cao đ͙ an toàn bɠo mɪtî
IV Các dɞng thͧ tͥc lưu trͯ
IV.1. Các thͧ tͥc lưu hʄ th͑ng

- SQL server cung cɢp các thͧ tͥc lưu hʄ th͑ng , các thͧ tͥc nay là m͙t tɪp hơp các câu
lʄnh T_SQL . Nhͯng thͧ tͥc này cho phép cɪp nhɪt CSDL và cɪp nhɪt các bɠng.

- Tên cͧa tɢt cɠ các thͧ tͥc lưu hʄ th͑ng đɾu bɬt đɤu v͛i ³sp_´. Thͧ tͥc Lưu hʄ th͑ng đưͣc
đɴt trong CSDL master

- M͙t s͑ thͧ tͥc lưu thông dͥng


Các thͧ tͥc đăng nhɪp :î

Chúng ta có thʀ sͭ dͥng Stored procedures đʀ tɞo lɪp và g͡ b͏ các đăng nhɪp .
1)Đʀ tɞo lɪp m͙t đăng nhɪp chúng ta thͱc hiên câu lʄnh sau:
EXEC sp_addlogin µ ThaiMinh¶ , µ123456¶
͞ đây tên đăng nhɪp là ³ThaiMinh´ và mɪt khɦu là ³123456´

2) Đʀ g͡ b͏ m͙t đăng nhɪp khi nó không còn cɤn thiɼt nͯa, chúng ta có thʀ sͭ dͥng các
câu lʄnh sau:

EXEC sp_droplogin µThaiMinh¶


- Các thͧ tͥc danh mͥc : Cung cɢp m͙t giao diʄn danh mͥc th͑ng nhɢt cho viʄc truy cɪp
vào các cɤu n͑i CSDL , cũng như SQL server , tͫ cùng m͙t ͩng dͥng , kɼt n͑i v͛i CSDL m͟
cͧa Microsoft (ODBC) API (application programming interface )

-Các thͧ tͥc m͟ r͙ng : Các thͧ tͥc m͟ r͙ng cho phép ngư͝i dùng khôi phͥc và thͱc hiʄn
m͙t thư viʄn liên kɼt đ͙ng (DLL) . THư viên liên kɼt đ͙ng lá m͙t tɪp hͣp các thͧ tͥc ,
chương trình con đưͣc lưu trͯ trong m͙t file.dll . Nó đưͣc nɞp vào khi m͙t chương trình cɤn
đɼn.

- Các thͧ tͥc hʄ th͑ng :


Thͧ tͥc lưu trͯ hʄ th͑ng Miêu tɠ

Sp_databases Liʄt kê tɢt cɠ các CSDL hiʄn tɞi trong server

Sp_server_info Liʄt kê thông tin vɾ server , ví dͥ như b͙ kí tͱ , phiên bɠn và thͩ tͱ sɬp
xɼp

Sp_stored_procedures Liʄt kê tɢt cɠ các thͧ tͥc lưu co trong môi trư͝ng hiên tɞi .

Sp_tables Liʄt kê tɢt cɠ các đ͑i tưͣng mà có thʀ đưͣc truy vɢn trong môi trư͝ng hiʄn tɞi.

Sp_start_job Bɬt đɤu m͙t nhiʄm vͥ tư đ͙ng ngay lɪp tͩc

Sp_stop_job Dͫng lɞi m͙t nhiʄm vͥ tư đ͙ng khi nó đang chɞy

Sp_password Thêm hoɴc thay đ͕i mɪt khɦu cͧa tài khoɠn đăng nhɪp.

Sp_configure Thay đ͕i các tuƒ ch͍n trong cɢu hình toàn cͥc cͧa SQL server

Sp_help Hiʀn thʈ thông tin vɾ m͙t đ͑i tưͣng CSDL nào đó.

Sp_helptext Hiʀn thʈ chu͗i ký tͱ thͱc cho m͙t quy tɬc , hoɴc huͷ thͧ tͥc lưu trư không mã
hoá , hàm đʈnh nghĩa b͟i ngư͝i sͭ dͥng , bɨy l͗i hoɴc view.

-Các thͧ tͥc bɠo mɪt : SQL server cung cɢp m͙t s͑ thͧ tͥc hʄ th͑ng giúp cho viʄc quɠn lý
bɠo mɪt .

- Các thͧ tͥc con tr͏ : thͧ tͥc đưͣc sͭ dͥng đʀ thͱc hiʄn các chͩc năng cͧa m͙t con tr͏
- Các thͧ tͥc truy vɢn phân tán : SQl server cung cɢp các thͧ tͥc thͱc thi và quɠn lý các
truy vɢn phân tán . Các truy vɢn phân tán nhɪn vɾ dͯ liʄu không đ͓ng nhɢt tͫ các ngu͓n
kɼt hͣp , bao g͓m m͙t hay nhiɾu CSDL cͧa sql server.

-Các thͧ tͥc vɾ truy vɢn dùng cho các tiɼn trình (agent) trong SQL server : các tiɼn trình
trong sql server sͭ dͥng các thͧ tͥc này đʀ lɪp lʈch cho các tác vͥ .

-Các thͧ tͥc sql Mail : Các thͧ tͥc này đưͣc sͭ dͥng đʀ thͱc hiʄn các thao tác vɾ thư điʄn
tͭ trong sql server.
IV.2 Các thͧ tͥc lưu đinh nghĩa b͟i ngư͝i sͭ dͥng

Bên cɞnh viʄc sͭ dͥng các thͧ tͥc lưu đưͣc cài đɴt sɲn , chúng ta có thʀ tɞo ra nhͯng thͧ
tͥc lưu cͧa riêng mình .
Cú pháp: CREATE PROC[EDURE] TÊN_THͦ _TͤC
Vd : M͙t thͧ tͥc lưu tên là Titles_1389 hiʀn thi chi tiɼt các tiêu đɾ cͧa publisher ID 1389
như sau:
CREATE PROCEDURE Titles_1389
AS ³hiʀn thʈ các tiêu đɾ cho publisher 1389 ´
Select * from titles where pub_id = µ1389¶ như sau:

IV.3 Thͱc thi m͙t thͧ tͥc lưu

Cú Pháp : EXEC[UTE] TÊN_THͦ_TͤC


Vd : Câu lʄnh thͱc thi thͧ tͥc lưu ͟ trên là :
EXECUTE Titles_1389 như hình sau:
IV.4 Sͭ dͥng tham biɼn trong thͧ tͥc lưu
Cú pháp : CREATE PROCEDURE tên_ thͧ_ tͥc
@Tên _tham_biɼn loɞi_ dͯ_ liʄu
As«
VD:
CREATE PROCEDURE Titles_Pub
@v_pubid char(4)
As
Select * from titles where pub_id = @v_pubid
Cͥ thʀ nhìn hình sau:

M͗i thͧ tͥc đưͣc tao ra , sͭ dͥng câu lʄnh EXECUTE đʀ truyɾn tham s͑ và thͱc thi thͧ tͥc .
Lʄnh EXECUTE đʀ lɢy ra các giá trʈ cͧa tiêu đɾ cho publisher voi ID la 0877 sɺ như sau:

EXECUTE Titles_Pub µ0877¶


Kɼt quɠ cͧa lʄnh trên chʆ ra trong hình sau :

IV.5 Biên dʈch lɞi thͧ tͥc lưu


- Sͭ dͥng thͧ tͥc lưu hʄ th͑ng sp_recompile : thͧ tͥc này bu͙c m͙t thͧ tͥc lưu phɠi đưͣc
biên dich lɞi khi nó thͱc hiên ͟ lɤn kɼ tiêp
Cú pháp : sp_recompile [ @ objectname = ] µobject ¶

-Chʆ đʈnh WITH RECOMPILE v͛i câu lʄnh CREATE PROCEDURE


Mʄnh đɾ WITH RECOMPILE đưͣc sͭ dͥng đʀ tɞo ra thͧ tͥc lưu , SQL sɺ biên dʈch lɞi thͧ tͥc
m͗i lɤn nó đưͣc thͱc thi . Tuy nhiên điɾu này làm chɪm lɞi quá trình sͭ lý thͧ tͥc .

Cú pháp cͧa nó:

CREATE PROCEDURE tên_thͧ _tͥc


@parameter_name data_type
With recompile As«
- Chʆ đʈnh WITH RECOMPILE v͛i lʄnh EXECUTE
EXEC[UTE] tên ¬¬¬¬¬¬¬¬_thͧ _tͥc WITH RECOMPILE
IV.6 Nhͯng thͧ tͥc thông báo l͗i

Mã trɠ vɾ phɠi trɠ lɞi giá trʈ cͧa chúng vào trong m͙t biɼn s͑. Câu lʄnh đʀ khai báo biɼn s͑
và sͭ sͥng nó trong su͑t quá trình thͱc thi thͧ tͥc là :

DECLARE @return_variable_name data_type

EXECUTE @return_variable_name = procedure_name

Trong đó @return_variable_name chͩa mã trɠ vɾ b͟i thͧ tͥc lưu

VD: Hãy sͭa đ͕i thͧ tͥc Titles_pub đʀ trɠ vɾ giá trʈ 0, giá trʈ mɴc đʈnh cͧa sql server , thͱc
hiʄn thành công thì hiʀn thʈ các hàng . Nɼu không có hàng nào đưͣc tìm thɢy , nó sɺ trɠ vɾ
giá trʈ 1

ALTER PROCEDURE titles_Pub ; khai báo sͭa đ͕i thͧ tͥc


@v_pubid char(4)
As
DECLARE @v_return int
SELECT @v_return=Count (*)
From titles where pub_id = @v_pubid
If @v_return >0
Select * from titles where pub_id = @v_pubid
Else
RETURN @v_return+1
Itgate‘

You might also like