Chương 5 thủ tục nội tại (stored procedure) SQL server 2005

68 611 0
Chương 5 thủ tục nội tại (stored procedure)    SQL server 2005

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Công việc lập trình luôn đòi hỏi khả năng tái sử dụng mã lệnh Không những vậy, các đoạn mã lệnh được tái sử dụng còn phải có tính uyển chuyển, xử lý linh động theo từng tình huống sử dụng. Từ đó xuất hiện khái niệm lập trình hướng thủ tục (functional). Các thủ tục được gọi lại và điều khiển thông qua hệ thống tham số

Chương THỦ TỤC NỘI TẠI (STORED PROCEDURE) 5.1 Giới thiệu 5.2 Phân loại thủ tục 5.3 Tạo thủ tục 5.4 Lời gọi thủ tục 5.5 Khai báo sử dụng biến SQL Server 2005 Chương THỦ TỤC NỘI TẠI (STORED PROCEDURE) 5.6 Giá trị trả tham số thủ tục 5.7 Phát biểu điều khiển 5.8 Tham số với giá trị mặc định 5.9 Sửa đổi thủ tục 5.10 Xoá thủ tục SQL Server 2005 5.1 Giới thiệu thủ tục • Công việc lập trình đòi hỏi khả tái sử dụng mã lệnh • Không vậy, đoạn mã lệnh tái sử dụng phải có tính uyển chuyển, xử lý linh động theo tình sử dụng • Từ xuất khái niệm lập trình hướng thủ tục (functional) Các thủ tục gọi lại điều khiển thông qua hệ thống tham số SQL Server 2005 5.1 Giới thiệu thủ tục •Việc lập trình CSDL không ngoại lệ Trong môi trường SQL Server, thủ tục gọi thủ tục thường trú (stored procedure – SP) •Thường trú: Chỉ dịch lần, từ lưu trũ bền vững CSDL, bền vững tựa table Bất cần, ta việc gọi thực SQL Server 2005 5.1 Giới thiệu thủ tục • Tính tái sử dụng, uyển chuyển nhờ hệ thống tham số • Khi biên dịch SP, SQL Server tối ưu hóa cho thực thi hiệu Kết tối ưu hóa lưu bền vững Khi gọi thực thi không cần tối ưu hóa lại lời gọi thủ tục tiết kiệm thời gian tài nguyên khối lệnh tương đương thân thủ tục • Ứng dụng triển khai theo môi trường client-server Client gửi lời gọi SP lên server chiếm dụng đường truyền nhiều so với việc gửi khối lệnh tương đương thân hàm tránh nghẽn đường truyền, giảm trì trệ SQL Server 2005 5.2 Phân loại thủ tục Trong SQL Server 2005 có nhóm thủ tục nội sau: •Nhóm thứ người dùng tạo Nó bao gồm hai loại: - - Loại thủ tục nội người dùng tạo lưu vào CSDL Chúng chứa phát biểu T-SQL Loại thứ hai khai báo tạo ngôn ngữ lập trình NET SQL Server 2005 5.2 Phân loại thủ tục •Nhóm thứ hai thủ tục nội hệ thống thực chức quản trị CSDL thường dùng Các thủ tục chứa CSDL Resource - Danh sách thủ tục nội hệ thống hiển thị ngăn System Stored Procedure Thủ tục nội CSDL Resource có tên với tiền tố sp_ Do bạn không nên đặt tên thủ tục nội tạo tiền tố SQL Server 2005 5.2 Phân loại thủ tục •Nhóm thứ hai thủ tục nội hệ thống thực chức quản trị CSDL thường dùng Các thủ tục chứa CSDL Resource - Danh sách thủ tục nội hệ thống hiển thị ngăn System Stored Procedure - Thủ tục nội CSDL Resource có tên với tiền tố sp_ Do bạn không nên đặt tên thủ tục nội tạo tiền tố •Nhóm thứ ba thủ tục nội hệ thống mở rộng Loại lưu CSDL Resouce có tên bắt đầu với xp_ SQL Server 2005 5.3 Tạo thủ tục •Trong khung Object Explorer, chọn Database chứa thủ tục nội cần tạo, chọn Programmability Kích nút phải chuột lên mục Stored Procedures chọn New Stored Procedure, cửa sổ Query xuất cho phép bạn soạn thảo câu lệnh T-SQL để tạo thủ tục Cú pháp tạo thủ tục nội sau: CREATE PROCEDURE tên_thủ_tục [(danh_sách_tham_số)] [WITH RECOMPILE |ENCRYPTION ] AS Các_câu_lệnh_của_thủ_tục SQL Server 2005 5.3 Tạo thủ tục Ví dụ 1: Viết thủ tục cho biết danh sách sinh viên lớp có mã cho trước Creste proc DS_Lop @MaLop Varchar (10) AS Select Sinhvien.MaSV, SinhVien.HoDem, SinhVien.Ten, SinhVien.NgaySinh From SinhVien Where SinhVien.MaLop= @MaLop Go SQL Server 2005 10 5.11.2 Quá trình xử lý Cursor Mặc dù Cursor loại T-SQL API có cú pháp khác trình xử lý theo quy trình tổng quát sau: •Kết hợp Cursor với tập ghi từ phát biểu T-SQL định nghĩa đặc tính Cursor ứng với tập ghi cần cập nhật •Thực thi phát biểu T-SQL để trỏ đến Cursor •Lấy ghi Cursor bạn muốn, hành động gọi fetch Sau đó, di chuyển đến ghi •Thực thao tác xóa, sửa liệu (nếu cần) dòng thời Cursor •Đóng Cursor SQL Server 2005 54 5.11.2.1 Khai báo Cursor •Khai báo Cursor sử dụng T-SQL có cú pháp sau: DECLARE Tên_Cursor [INSENSITIVE] [SCROLL] CURSOR FOR Câu_lệnh_Select [FOR {READ ONLY| UPDATE [ OF tên_cột [,…n]]} ] SQL Server 2005 55 5.11.2.1 Khai báo Cursor •INSENSITIVE: Cho phép bạn định nghĩa Cursor ứng với tập liệu tạm thời dùng cho Cursor Mọi đòi hỏi Cursor lấy từ tập liệu CSDL tempdb •SCROLL: Chỉ định tùy chọn lấy ghi theo hình thức NEXT, PRIOR, FIRST, LAST, ABSOLUTE, RELATIVE Đối với trường hợp không khai báo tùy chọn khai báo Cursor NEXT tùy chọn mặc định •READ ONLY cho phép bạn ngăn ngừa cập nhật hay xóa liệu Cursor •UPDATE [ OF tên_cột [,…n]: Cột cho phép cập nhật Nếu định tùy chọn bạn cập nhật liệu cột SQL Server 2005 56 5.11.2.1 Khai báo Cursor •Khai báo biến Cursor_Hocphan sau DECLARE Cursor_Hocphan CURSOR FOR Select * from hocphan SQL Server 2005 57 5.11.2.2 Mở Cursor Sau khai báo biến Cursor, bạn mở Curosr theo cú pháp sau: •OPEN Tên_Cursor •Ví dụ: OPEN Cursor_Hocphan SQL Server 2005 58 5.11.2.3 Lấy liệu Tùy thuộc vào cột liệu mà phát biểu SELECT trả về, bạn sử dụng phát biểu FETCH với cú pháp sau: FETCH [[NEXT | PRIOR | FIRST| LAST |ABSOLUTE {n| @nvar}| RELATIVE {n| @nvar}] FROM ] {{[GLOBAL]Tên_Cursor}| Tên_biến_Cursor} [INTO Tên_biến [/ n]] SQL Server 2005 59 5.11.2.3 Lấy liệu •NEXT: Cho phép lấy ghi sau ghi hành định ghi vừa lấy ghi hành •PRIOR: Cho phép lấy ghi trước ghi hành định ghi ghi hành •FIRST: Cho phép lấy ghi định ghi ghi hành •LAST: Cho phép lấy ghi cuối định ghi ghi hành SQL Server 2005 60 5.11.2.3 Lấy liệu •ABSOLUTE {n| @nvar}: - - Nếu n @nvar số dương cho phép lấy ghi thứ n so với ghi định ghi ghi hành tính từ xuống Nếu n @nvar số âm cho phép lấy ghi thứ n so với ghi cuối định ghi ghi hành tính từ lên SQL Server 2005 61 5.11.2.3 Lấy liệu •RELATIVE {n| @nvar}: - - Nếu n @nvar số dương cho phép lấy ghi thứ n so với ghi hành định ghi ghi hành tính từ xuống Nếu n @nvar số âm cho phép lấy ghi thứ n so với ghi hành định ghi ghi hành tính từ lên SQL Server 2005 62 5.11.2.3 Lấy liệu •Ví dụ: Để lấy liệu cột khai báo phát biểu SQL vào biến cục bạn khai báo sau DECLARE @Mahocphan nvarchar(10) DECLARE @Tenhocphan nvarchar(50) DECLARE @Sotinchi smallint FETCH NEXT FROM Cursor_Hocphan INTO @Mahocphan, @Tenhocphan, @Sotinchi SQL Server 2005 63 5.11.2.4 Duyệt ghi Để duyệt qua ghi Cursor, bạn sử dụng hàm @@FETCH_STATUS phát biểu WHILE Hàm @@FETCH_STATUS trả giá trị ứng với ghi lấy hợp lệ Phát biểu sau in toàn liệu biến Cursor_Hocphan WHILE @@FETCH_STATUS=0 BEGIN PRINT @Mahocphan + ‘-’ + @Tenhocphan + ‘-’ +@Sotinchi FETCH NEXT FROM Cursor_Hocphan INTO @Mahocphan, @Tenhocphan, @Sotinchi END SQL Server 2005 64 5.11.2.5 Đóng giải phóng nhớ cho biến Cursor Sau kết thúc làm việc với Cursor, bạn cần khai báo để đóng Cursor giải phóng nhớ cấp cho với cú pháp sau: CLOSE Tên_Cursor DEALLOCATE Tên_Cursor Ví dụ: CLOSE Cursor_Hocphan DEALLOCATE Cursor_Hocphan SQL Server 2005 65 5.11.2.4 Duyệt ghi Để duyệt qua ghi Cursor, bạn sử dụng hàm @@FETCH_STATUS phát biểu WHILE Hàm @@FETCH_STATUS trả giá trị ứng với ghi lấy hợp lệ Phát biểu sau in toàn liệu biến Cursor_Hocphan WHILE @@FETCH_STATUS=0 BEGIN PRINT @Mahocphan + ‘-’ + @Tenhocphan + ‘-’ +@Sotinchi FETCH NEXT FROM Cursor_Hocphan INTO @Mahocphan, @Tenhocphan, @Sotinchi END SQL Server 2005 66 5.11.2.4 Khai báo Cursor thủ tục hàm Phần trình bày khai báo Cursor thủ tục hàm sử dụng từ khóa NEXT| PRIOR | FIRST| LAST| ABSOLUTE| RELATIVE để lấy ghi theo yêu cầu SQL Server 2005 67 8.3 Bảo trì sở liệu 8.3.1 Sao lưu dự phòng 8.3.2 Khôi phục sở liệu SQL Server 2005 68 .. .Chương THỦ TỤC NỘI TẠI (STORED PROCEDURE) 5. 6 Giá trị trả tham số thủ tục 5. 7 Phát biểu điều khiển 5. 8 Tham số với giá trị mặc định 5. 9 Sửa đổi thủ tục 5. 10 Xoá thủ tục SQL Server 20 05 5.1... lệnh T -SQL để tạo thủ tục Cú pháp tạo thủ tục nội sau: CREATE PROCEDURE tên _thủ_ tục [(danh_sách_tham_số)] [WITH RECOMPILE |ENCRYPTION ] AS Các_câu_lệnh_của _thủ_ tục SQL Server 20 05 5.3 Tạo thủ tục. .. mã dl01 cột điểm NULL) SQL Server 20 05 11 5. 3 Lời gọi thủ tục Thực thi thủ tục lời gọi thủ tục có dạng: •Tên _thủ_ tục [danh_sách_các_đối_số] Lời gọi thủ tục thực bên thủ tục khác, bên trigger hay

Ngày đăng: 23/06/2017, 16:26

Từ khóa liên quan

Mục lục

  • Chương 5 THỦ TỤC NỘI TẠI (STORED PROCEDURE)

  • Slide 2

  • 5.1 Giới thiệu thủ tục

  • Slide 4

  • Slide 5

  • 5.2 Phân loại thủ tục

  • Slide 7

  • Slide 8

  • 5.3 Tạo thủ tục

  • Slide 10

  • Slide 11

  • 5.3 Lời gọi thủ tục

  • Slide 13

  • 5.4 Lời gọi thủ tục

  • 5.5 Khai báo và sử dụng biến

  • 5.5.2 Phát biểu Set

  • Slide 17

  • 5.5.3 Phát biểu Select để gán giá trị

  • 5.6 Giá trị trả về của tham số trong thủ tục

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan