Nối tiếp nội dung phần 1 cuốn giáo trình 'SQL Server 2000', phần 2 giới thiệu tới người đọc các nội dung: Tạo và quản lý Stored procedure, tạo và sử dụng Trigger, tự động hóa các tác vụ quản trị, sao lưu dữ liệu, khôi phục dữ liệu, quản lý bảo mật và người dùng. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Giáo trình SQL Server 2000: Phần 2 ® C h ư ơ n g 10: Tạo và quán lý Stored Procedure loi m Chương 10: TẠO VÀ QUẢN LÝ STORED PROCEDURE Chương này đề cập các vấn đề sau: w 102 C h ư ơ n g 10: Tạo và quản lý Stored Procedure Ú n g dụng của bạn có t h ể giao t i ế p với SQL Server theo 2 cách, bạn có t h ể v i ế t chương t r ì n h gởi p h á t biểu T-SQL t ừ client đ ế n server hoặc bạn tạo stored procedure, c h ú n g được lưu v à thực t h i ở server. N ế u bạn gởi p h á t biểu T-SQL từ client đ ế n server, các p h á t b i ể u được gởi qua mạng và được SQL Server b i ê n dịch l ạ i m ỗ i k h i thực t h i c h ú n g . N ế u bạn dùng stored procedure, bạn có t h ể thực t h i stored procedure b ằ n g cách gọi chúng từ ứng dụng của b ạ n b ằ n g m ộ t p h á t biểu. N h ư đ ã nói l ầ n đầu t i ê n stored procedure được thực t h i n ó được SQL Server b i ê n dịch v à k ế hoạch thực t h i của nó được tạo v à lưu t r o n g v ù n g n h ớ đ ệ m . SQL Server dùng l ạ i k ế hoạch thực t h i n à y k h i stored procedure được g ọ i l ạ i mà k h ô n g p h ả i b i ê n dịch l ạ i . N h ư v ậ y k h i các p h á t biểu T-SQL được xử lý thường xuyên, sử dụng stored procedure sẽ g i ả m lưu t h ô n g m ạ n g v à hiệu quả, nhanh h ơ n l à việc gởi các p h á t biểu t ừ client đ ế n server. Có 3 k i ể u t h ủ tục: stored procedure h ệ t h ố n g , stored procedure bên ngoài và stored procedure do người d ù n g đ ị n h nghĩa. Stored procedure hệ thống do SQL Server cung cấp có t ê n b ắ t đ ầ u b ằ n g t i ề n t ố sp_. Chúng được d ù n g để quản lý SQL Server v à h i ể n t h ị các t h ô n g t i n v ề CSDL và người dùng. Stored procedure m ở r ộ n g là những t h ư v i ệ n l i ê n k ế t động (DLL) m à SQL Server có t h ể nạp v à thực t h i . T h ư ờ n g c h ú n g được viết bằng c hoặc C++. Stored procedure b ê n n g o à i có t ê n b ắ t đ ầ u là xp_. Stored procedure do người d ù n g đ ị n h nghĩa được tạo v à t ù y chỉnh đ ể thực t h i bất kỳ t á c vụ n à o người d ù n g muốn. Chú ý: Không nên đặt tên cho thủ tục của bạn (thủ tục do người dùng định nghĩa) với tiền tô sp_ vi khi SQL Seruer gặp thủ tục với tên bắt đầu là sp_ SQL Server trước hết sẽ tìm trong CSDL master. Vì thế giả sử nếu bạn tạo thủ tục sp_myproc trong CSDL MyDB, SQL Server sẽ tìm trong CSDL master trước khi nó tìm trong bất kỳ CSDL nào khác của người dùng. Như vậy đặt tên myproc sẽ hiệu quả hon. 2. T Ạ O S T O R E D PROCEDURE Trong p h ầ n n à y b ạ n sẽ xem 3 p h ư ơ n g p h á p tạo stored procedure dùng p h á t biểu CREATE PROCEDURE, d ù n g Enterpri.se M a n ă g e r và dùng Create Stored Procedure wizard. Dù chọn p h ư ơ n g p h á p n à o cũng C h ư ơ n g 10: Tạo và quản lý Stored Procedure luôn đ ả m bảo r ằ n g b ạ n p h ả i chạy k i ể m t r a t h ử cho đ ế n k h i nó hoạt động đúng ý bạn muốn. 2.1. Dùng T-SQL tạo stored procedure Chú ý là phải chọn CSDL bạn muốn tạo stored procedure trước khi tạo stored procedure b ằ n g l ệ n h USE. G i ả sử bạn muốn tạo một stored procedure đ ặ t t ê n là DienThoaiKH, t h ủ tục n à y chọn và t r ả về 3 cột dữ liệu của từng dòng dữ liệu trong bảng K H A C H _ H A N G với điều k i ệ n khách h à n g có sôi đ i ệ n thoại. Trước k h i tạo t h ú tục chúng ta k i ể m tra xem t h ủ tục n à y có t ồ n t ạ i hay chưa d ù n g l ệ n h I F EXIST... N ế u t h ủ tục tồn t ạ i thì xóa nó và sau đó tạo t h ủ tục có cùng t ê n . L ệ n h thực h i ệ n n h ư sau: USE MyDB GO I F EXISTS (SELECT name FROM s y s o b j e c t s VÍHERE rĩame = • D i e n T h o a i K H ' AND type = 'p') DROP PROCEDURE D i e n T h o a i K H GO CREATE PROCEDURE DienThoaiKH AS SELECT HO_KH, TEN_KH, DIEN_THOAI FROM KHACH_HANG WHERE D I E N _ T H O A I I S NÓT NULL GO Thực thi đoạn mã T-SQL trên sẽ tạo ra thủ tục DienThoaiKH, để thực t h i thủ tục n à y bạn gọi t ê n t h ủ tục n h ư sau: USE MyDB GO exec DienThoaiKH Nếu bạn không chọn đúng CSDL có chứa thủ tục bạn sẽ thực thi, SQL Server sẽ t h ô n g báo l ỗ i sau: Server: Msg 2812, Level 16, state 62, Line Ì Could nót find stored procedure ' DienThoaiKH * . ® 104 C h ư ơ n g 10: Tạo và quản lý Stored Procedure Sử d ụ n g tham số Bây giờ c h ú n g ta sẽ tạo m ộ t t h a m số n h ậ p cho t h ủ tục v à có t h ể t r u y ề n dữ l i ệ u vào t h ủ tục. Đ ể chỉ ra t h a m số n h ậ p đ ặ t k ý h i ệ u @ trước t ê n t h ủ tục có dạng @tên_thutuc. B ạ n có t h ể chỉ r a đ ế n 1024 t h a m số trong t h ủ tục. G i ả sử tạo m ộ t t h ủ tục KhachHang có t h a m số n h ậ p là @sodt. K h i thực t h i t h ủ tục n à y b ạ n cung cấp số đ i ệ n t h o ạ i , t h ủ tục sẽ trả về dòng dữ liệu có số đ i ệ n t h o ạ i b ằ n g số b ạ n cung cấp cho t h a m sô. Tạo t h ủ tục n h ư sau: USE MyDB GO I F EXISTS (SELECT name FROM sysobjects VỈHERE name = ' K h a c h H a n g ' AND type = 'P') DROP PROCEDURE K h a c h H a n g GO CREATE PROCEDURE K h a c h H a n g @sodt c h a r ( 2 0 ) AS SELECT HO_KH, TEN_KH, DIEN_THOAI FROM KHACH_HANG VÍHERE DIEN_THOAI = @SOdt GO Nếu bạn thực t h i t h ủ tục m à k h ô n g cung cấp t h a m số, SQL Server sẽ t r ả về t h ô n g điệp l ỗ i sau: S e r v e r : Msg 201, Level 16, state 3, Procedure KhachHang, L i n e 0 Procedure 'KhachHang' expects parameter ' C h ư ơ n g 10: Tạo và quản ...