Khi nào dùng function và khi nào dùng stored procedure

1 Mục tiêu và tóm tắt nội dung .............................................................................................................................

2 Hướng dẫn chi tiết ..................................................................................................................................................

2 Stored Procedure [Đọc là Stored Procedure hoặc Procedure] ....................................................

2.1 Giới thiệu .....................................................................................................................................................
  • 1 Mục tiêu và tóm tắt nội dung .............................................................................................................................
  • 2 Hướng dẫn chi tiết ..................................................................................................................................................
    • 2 Stored Procedure [Đọc là Stored Procedure hoặc Procedure] ....................................................
      • 2.1 Giới thiệu .....................................................................................................................................................
      • 2.1 Cú pháp .........................................................................................................................................................
      • 2.1 Ví dụ ...............................................................................................................................................................
    • 2 Function................................................................................................................................................................
      • 2.2 Giới thiệu .....................................................................................................................................................
      • 2.2 Cú pháp .........................................................................................................................................................
      • 2.2 Ví dụ ...............................................................................................................................................................
  • 3 Bài tập ..........................................................................................................................................................................
  • 4 Bài tập về nhà

Ta có the dùng Transact–SQL EXCUTE đe thự c thi các stored procedure. Stored

procedure khác với các hàm xử lý là giá trị trả ve củ a chúng không chứ a trong tên

và chúng không đượ c sử dụng trự c tiep trong bieu thứ c.

Stored procedure có nhữ ng thuận lợ i so vớ i các chương trı̀nh Transact-SQL lưu

trữ cục bộ là:

- Stored procedure cho phép điều chỉnh chương trình cho phù hợp:

Chúng ta có chı̉ tạo stored procedure một lan và lưu trữ trong database

một lan, trong chương trı̀nh chúng ta có the gọi nó vơ ́i so lan bat kỳ. Stored

procedure có the được chı̉ rõ do một người nào đó tạo ra và sự thay đoi

củ a chúng hoàn toàn độc lập với source code củ a chương trı̀nh.

- Stored procedure cho phép thực thi nhanh hơn: neu sự xử lý yêu cau

một đoạn source code Transact – SQL khá lớ n hoặc việc thự c thi mang tı́nh

lặp đi lặp lại thı̀ stored procedure thự c hiện nhanh hơn việc thự c hiện hàng

loạt các lệnh Transact-SQL. Chúng đượ c phân tı́ch cú pháp và toi ưu hóa

trong lan thự c thi đau tiên và một phiên bả n dịch củ a chúng trong đó sẽ

được lưu trong bộ nhớ đe sử dụng cho lan sau, nghı̃a là trong nhữ ng lan

thự c hiện sau chúng không can phả i phân tı́ch cú pháp vàtoi ưu lại, mà

chúng sẽ sử dụng ket quả đã đượ c biên dịch trong lan đau tiên.

- Stored procedure có thể làm giảm bớt vấn đề kẹt đường truyền mạng:

giả sử ột xưm̉ lý mà có sử dụng hàng trăm lệnh củ a Transact-SQL và việc

thự c hiện thông qua từ ng dòng lệnh đơn, như vậy việc thư ̣ c thông qua

stored procedure sẽ tot hơn, vı̀ neu không khi thự c hiện chúng ta phả i gở i

hàng trăm lệnh đó lên mạng và đieu này sẽ da n đen tı̀nh trạng kẹt mạng.

- Stored procedure có thể sử dụng trong vấn đề bảo mật của máy: vı̀

ngườ i sử dụng có the đượ c phân cap nhữ ng quyen đe sử dụng các stored

procedure này, thậm chı́ họ không được phép thự c thi trự c tiep nhữ ng

stored procedure này.

2.1 Cú pháp .........................................................................................................................................................

Một Stored procedure đượ c định nghı̃a gom nhữ ng thành phan chı́nh sau:

Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM Trang 3

- Tên củ a stored procedure

- Các tham so input / output

- Thân củ a stored procedure: bao gom các lệnh củ a Transact-SQL dùng đe

thự c thi procedure.

Một stored procedure đượ c tạo ba ng lệnh Create Procedure, và có the thay đoi ba ng

cách dùng lệnh Alter Procedure, và có the xóa ba ng cách dùng lệnh Drop Procedure

trong lập lệnh củ a Transact– SQL

Tạo procedure:

CREATE PROCEDURE procedure_name {@parameter data_type input/output } /các bien tham so vào ra/ AS BEGIN [khai báo các bien cho xử lý] {Các câu lệnh transact-sql} END

Một số lưu ý khi viết stored procedure:

-- 1. Ghi chú 1, một dòng /* 2. Ghi chú 2 Nhieu dòng */ /3. Khai báo bien/ DECLARE @parameter_name data_type /4. Gán giá trị cho bien/ SET @parameter_name=value SELECT @parameter_name=column FROM ...

Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM Trang 5

2.1 Ví dụ ...............................................................................................................................................................

Ví dụ 1: Viết stored procedure tính tổng 2 số:

--Tạo CREATE PROCEDURE sp_Tong @So1 int, @So2 int, @Tong int out AS SET @Tong = @So1 + @So2; GO --Biên dịch stored-procedure→F --Kiem tra Declare @Sum int Exec sp_Tong 1, -2, @Sum out Print @Sum

Ví dụ 2: Viết stored procedure tính tổng các số chẳn từ mn:

--Tạo CREATE PROCEDURE sp_TongChanMN@m int, @n int AS BEGIN Declare @tong int Declare @i int Set @tong = 0 Set @i = @m While [@i o Giáo viên chỉ tham gia đề tài cùng bộ môn với giáo viên làm chủ nhiệm đề tài đó.. P7. Thực hiện xoá một giáo viên theo mã. Nếu giáo viên có thông tin liên quan [Có thân nhân, có làm đề tài, ...] thì báo lỗi. P8. In ra danh sách giáo viên của một phòng ban nào đó cùng với số lượng đề tài mà giáo viên tham gia, số thân nhân, số giáo viên mà giáo viên đó quản lý nếu có, ... P9. Kiểm tra quy định của 2 giáo viên a, b: Nếu a là trưởng bộ môn của b thì lương của a phải cao hơn lương của b. [a, b: mã giáo viên] P10. Khi thêm một giáo viên cần kiểm tra các quy định: Không trùng tên, tuổi > 18, lương > 0 P11. Mã giáo viên được phát sinh tự động theo quy tắc: Nếu đã có giáo viên 001, 002, 003 thì MAGV của giáo viên mới sẽ là 004. Nếu đã có giáo viên 001, 002, 005 thì MAGV của giáo viên mới là 003.

Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM Trang 11

Tên stored procedure: spTraPhong Nội dung: ghi nhận thông tin trả phòng của khách hàng xuống cơ sở dữ liệu. Tham số yêu cầu: mã đặt phòng [@madp], mã khách hàng [@makh] Các yêu cầu về kiểm tra và tính toán: - Kiểm tra tính hợp lệ của mã đặt phòng, mã khách hàng: Hợp lệ nếu khách hàng có thực hiện việc đặt phòng. - Ngày trả phòng chính là ngày hiện hành. - Tiền thanh toán được tính theo công thức: Tien = Số ngày mượn x đơn giá của phòng. - Phải thực hiện việc cập nhật tình trạng của phòng là “Rảnh” sau khi ghi nhận thông tin trả phòng. Yêu cầu khác: Phải có diễn giải bằng lời của các bước thực hiện.

Chủ Đề