Chương 14 Thủ tục lưu (Hướng dẫn thực hành)
Mục đích của chương 14
Kết thúc chương 14 bạn có thể:
Tạo các thủ tục lưu trong Enterprise Manager bằng wizard, hoặc không cần wizard
Sử dụng công cụ Query Analyzer để tạo các thủ tục lưu.
Thực thi các thủ tục lưu trong Query Analyzer
Biên dịch lại các thủ tục lưu trong Query Analyzer
Sửa đổi các thủ tục lưu trong Query Analyzer và Enterprise Manager
Sử dụng các tham số vào-ra cho các thủ tục
Sử dụng các thủ tục lưu hệ thống.
Xử lý các lỗi tính huống trong các thủ tục lưu
Các bước được đưa ra trong chương này là chi tiết, dễ hiểu. Nó được tạo ra với mục đích giúp
người đọc có thể học và hiểu công cụ một cách đầy đủ.
Hãy làm theo các bước sau một cách cẩn thận.
Phần I – Hướng dẫn Thời gian : 1 giờ 30 phút
14.1 Thủ tục lưu
Mọi người sử dụng cơ sở dữ liệu đều quan tâm đến tốc độ và hiệu quả của cơ sở dữ liệu
đó. Thủ tục lưu giúp nâng cao tốc độ xử lý và hiệu quả của cơ sở dữ liệu. Thủ tục lưu là
tập hợp các câu lệnh T-SQL đã được biên dịch trước, được lưu trữ dưới một tên nhất
định, và được xử lý như một đơn vị..
Thủ tục lưu có thể được tạo trong Enterprise Manager, bằng Wizard hoặc không.
14.1.1 Tạo Thủ tục lưu không cần Wizard.
Chúng ta hãy tạo một thủ tục lưu có tên là DisplayProducts trong cơ sở dữ liệu
Northwind,mà không sử dụng wizard. Thủ tục sẽ hiển thị các sản phẩm được cung cấp
bởi công ty Pavlova, Ltd. Các bước thực hiện như sau:
1. Nhấn đúp chuột vào cơ sở dữ liệu Northwind.
Một danh sách các đối tượng bên trong cơ sở dữ liệu Northwind được hiển thị.
2. Nhấn chuột phải vào đối tượng Stored Procedures, và chọn New Stored
Procedure… từ pop-up menu.
Hộp thoại Stored Procedure Properties – New Stored Procedure được hiển thị.
Thủ tục lưu 195
3. Nhập đoạn lệnh sau vào phần Text:
CREATE PROCEDURE DisplayProducts AS
SELECT productid, productname, unitprice
FROM products p, suppliers s
WHERE p.supplierid = s.supplierid
AND companyname = 'Pavlova, Ltd.'
Hình 14.1 Hiển thị hộp thoại với câu lệnh CREATE PROCEDURE
Hình 14.1: Tạo thủ tục lưu không cần Wizard
4. Nhấn vào nút bấm Check Syntax để kiểm tra sự chính xác về cú pháp của đoạn
mã.
Một thông báo được hiển thị, như trong hình 14.2.
Hình 14.2: Thông báo Syntax Check
196 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
5. Nhấn vào nút bấm OK trên thông báo.
6. Nhấn vào nút bấm OK trong hộp thoại Stored Procedure Properties.
Thủ tục DisplayProducts đã được tạo ra, và xuất hiện trong ô vuông bên phải, đó là danh
sách các thủ tục lưu.
14.1.2 Tạo thủ tục lưu với Wizard
SQL Server wizard có thể được sử dụng để tạo một thủ tục lưu. Wizard giúp tạo các thủ
tục, các thủ tục này có thể được sử dụng để chèn, cập nhật và xóa dữ liệu từ một bảng.
Chúng ta có thể đồng thời tạo các thủ tục lưu cho mỗi thao tác dữ liệu hoạt động trên một
số bảng.
Hãy sử dụng wizard tạo hai thủ tục lưu trong cơ sở dữ liệu Northwind: một để xóa dữ
liệu từ bảng Categories, và thủ tục lưu còn lại để nhập thêm dữ liệu vào bảng
Customers. Các bước thực hiện như sau:
1. Nhấn chuột vào biểu tượng Run a Wizard trên thanh công cụ. Hoặc nhấn chuột
vào Tools trên menu và chọn tùy chọn Wizards từ drop-down menu.
2. Mở rộng tùy chọn Database.
Một danh sách các wizard được hiển thị.
3. Chọn tùy chọn Create Stored Procedure Wizard .
4. Nhấn chuột vào nút bấm OK để bắt đầu wizard.
Hộp thoại Create Stored Procedure Wizard được hiển thị.
5. Nhấn chuột vào nút bấm Next.
6. Bảo đảm rằng cơ sở dữ liệu Northwind đã được lựa chọn như Database name,
và nhấn vào nút bấm Next.
7. Đánh dấu vào hộp chọn Insert cho bảng Customers, và họp chọn Delete cho
bảng Categories, như trong hình 14.3.
Thủ tục lưu 197
Hình 14.3: Chọn các thủ tục lưu.
8. Nhấn chuột vào nút bấm Next .
9. Chọn Finish để tạo các thủ tục.
Một thông báo quá trình tạo các thủ tục đã thành công được hiển thị,như hình 14.4.
Hình 14.4: Thông báo về quá trình tạo thủ tục lưu bằng Wizard.
10. Nhấn chuột vào nút OK.
Hai thủ tục lưu mới tạo xuất hiện trong bên phải ô vuông mà liệt kê các thủ tục lưu.
14.1.3 Thực thi các thủ tục lưu
Để thực thi một thủ tục lưu, Chúng ta phải sử dụng câu lệnh EXECUTE trong Query
Analyzer. Chúng ta hãy thực thi thủ tục DisplayProducts đã được tạo từ đầu. Các bước
thực hiện như sau:
198 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
1. Trong Enterprise Manager, chọn Tools | SQL Query Analyzer.
2. Trong cửa sổ truy vấn , nhập vào câu lệnh sau:
EXECUTE DisplayProducts
3. Nhấn vào nút chọn Execute Query trên thanh công cụ, hoặc nhấn phím F5
Thủ tục đã được thực thi , kết quả như trên hình 14.5.
Hình 14.5: Thi hành một thủ tục lưu.
14.1.4 Biên dịch lại thủ tục lưu .
Một thủ tục lưu bắt buộc phải được biên dịch lại để chắc chắn rằng các truy vấn trong thủ
tục đã được tối ưu hóa tương ứng với việc thay đổi các chỉ mục. Các thủ tục lưu có thể
được biên dịch lại theo ba cách sau:
Sử dụng thủ tục lưu hệ thống sp_recompile
Thêm tùy chọn WITH RECOMPILE cùng với câu lệnh CREATE PROCEDURE
Thêm tùy chọn WITH RECOMPILE cùng với câu lệnh EXECUTE
Chúng ta hãy sử dụng câu lệnh EXECUTE cùng với tùy chọn WITH RECOMPILE để
chạy thủ tục DisplayProducts. Để xem tác động của tùy chọn, đầu tiên chúng ta sẽ thi
hành thủ tục mà không có tùy chọn.Chúng ta sẽ sử dụng lệnh SET STATISTICS TIME
ON để hiển thị số phần nghìn giây cần thiết để phân tích cú pháp, biên dịch và chạy mỗi
một câu lệnh.Các bước thực hiện như sau:
1. Trong cửa sổ truy vấn Query Analyzer, đánh vào đoạn lệnh sau:
SET STATISTICS TIME ON
EXECUTE DisplayProducts
2. Nhấn vào nút bấm Execute Query trên thanh công cụ,hoặc nhấn phím F5.
3. Chọn Messages tab ở duới của sổ Results.
Thủ tục lưu 199