Concepts of Functions and Procedures Functions • Được gọi thông qua tên của nó • Chủ yếu được sử dụng cho mục đích tính toán • Function có thể có khối lồng nhau, hoặc nó có thể được xác
Trang 1Procedures and Functions
in
Nhóm thực hiện: Nhóm 8
Trang 41 Concepts of Functions and Procedures
• Parameters
• Return
Trang 51 Concepts of Functions and
Trang 61 Concepts of Functions and
Trang 71 Concepts of Functions and
Procedures
Functions
• Được gọi thông qua tên của nó
• Chủ yếu được sử dụng cho mục đích tính toán
• Function có thể có khối lồng nhau, hoặc nó có thể được xác định và lồng vào bên trong các khối hoặc các gói khác
• Nó chứa một phần khai báo (tùy chọn), phần thực thi, phần xử lý ngoại lệ (tùy chọn)
• Function sử dụng RETURN hoặc tham số OUT để trả
về giá trị, và kiểu dữ liệu trả về được xác định tại thời điểm tạo ra
Trang 81 Concepts of Functions and
Procedures
Procedures
• Được gọi thông qua tên của nó
• Chủ yếu được sử dụng để thực hiện một quá trình
• Procedure có thể có khối lồng nhau, hoặc nó có thể được xác định và lồng vào bên trong các khối hoặc các gói khác
• Nó chứa một phần khai báo (tùy chọn), phần thực thi, phần xử lý ngoại lệ (tùy chọn)
• Procedure có thể có RETURN để trả lại quyền kiểm soát vào khối gọi nó, nhưng nó không thể trả lại bất
kỳ giá trị thông qua RETURN
• Giá trị có thể được trả về thông qua các tham số
Trang 9Built-in functions
2 Functions in MS SQL Server
Trang 102 Functions in MS SQL Server
What are Built-In Functions?
Built-in function là 1 mảnh nhỏ của lập trình có thể có
hoặc không có input và trả về một giá trị, được xây dựng sẵn trong SQL
Built-In function thường được sử dụng trong câu lệnh
SELECT để tính toán những giá trị hoặc điều khiển dữ
liệu
Trang 112 Functions in MS SQL Server
Using date and
time functions
The GETDATE function trả
về kiểu dữ liệu DATETIME
Trang 12được gọi là datepart chỉ
rõ cho function phần nào
của ngày được trả về
DATEPART function trả về
kiểu dữ liệu như 1 giá trị
integer, trong khi
DATENAME function trả
về 1 giá trị chuỗi có kiểu
dữ liệu là nvarchar.
Trang 132 Functions in MS SQL Server
Using date
and time
functions
Trang 142 Functions in MS SQL Server
String functions
RTRIM và LTRIM function xóa
khoảng trắng bên phải và trái
của chuỗi.
LEFT và RIGHT function trả về 7
ký tự đầu từ bên trái và phải.
CONCAT function tự động đổi 1
giá trị không phải là chuỗi thành
chuỗi để trả về chuỗi
Trang 19User-defined functions
2 Functions in MS SQL Server
Trang 20Định nghĩa:
Hàm do người dùng định nghĩa (UDFs): Là một đối tượng mới được bổ sung của phiên bản SQL Server 2000 UDFs mang đầy đủ tính chất của một hàm như đa số các ngôn ngữ lập trình khác, có nghĩa là một chương trình con đảm trách một xử lý nào đó với đặc tính là sẽ nhận các thông
số đầu vào và trả về một giá trị kết quả xử lý tính toán được dựa trên các tham số đầu vào đã nhận
20
2 Functions in MS SQL Server
Trang 21Phân loại: UDFs gồm hai loại chính
1 • Scalar Function
2 • Table-value function
• Một scalar function là hàm trả về một giá trị với kiểu dữ liệu được khai
báo trong RETURNS lúc tạo hàm
• Table-valued function trả
về một table chứa những giá trị từ câu lệnh
2 Functions in MS SQL Server
Trang 22Đầu tiên, tên của hàm sẽ được đặt sau từ khóa CREATE FUNCTION Tên lược
đồ là tùy chọn Nếu không chỉ định rõ ràng, SQL Server sử dụng dbo theo mặc định
Thứ hai, dấu ngoặc đơn sau tên hàm là một danh sách các tham số
Thứ ba, chỉ định kiểu dữ liệu của giá trị trả về trong câu lệnh RETURN
Thứ tư, bên trong phần thân của hàm, phải bao gồm câu lệnh RETURN để trả
về giá trị
2 Functions in MS SQL Server
Trang 23statements RETURN value END
Lưu ý rằng có thể sử dụng câu lệnh CREATE OR ALTER để tạo hàm do người dùng định nghĩa nếu nó không tồn tại hoặc để sửa đổi hàm vô hướng hiện có
DROP FUNCTION [schema_name.]function_name;
2 Functions in MS SQL Server
Trang 24Ví dụ 1:
24
Dưới đây minh họa sơ đồ cơ sở dữ liệu BikeStores
2 Functions in MS SQL Server
Trang 25Ví dụ 1:
25
Ví dụ sau đây tạo ra một hàm tính toán doanh thu
dựa trên số lượng, giá niêm yết và chiết khấu
2 Functions in MS SQL Server
Trang 27Gọi hàm và thực thi:
Output:
Xóa hàm:
2 Functions in MS SQL Server
Trang 28Ví dụ 2:
28
Ví dụ sau đây tạo ra một hàm tính toán giai thừa
của một số nguyên nhập vào:
2 Functions in MS SQL Server
Trang 29Sau khi tạo thành công:
2 Functions in MS SQL Server
Trang 30Để thực thi hàm ta dùng lệnh:
Kết quả:
2 Functions in MS SQL Server
Trang 31CREATE FUNCTION [ schema_name ] function_name (parameter_list) RETURN TABLE
AS RETURN Select_statement
Cú pháp tương tự như cú pháp tạo ra hàm do người dùng định nghĩa
RETURN TABLE chỉ định rằng hàm sẽ trả về một bảng Không có câu lệnh BEGIN END Câu lệnh chỉ đơn giản là truy vấn dữ liệu
2 Functions in MS SQL Server
Trang 32CREATE FUNCTION [ schema_name ] function_name (parameter_list) RETURN @TableName TABLE (Columns)
AS BEGIN;
Function_body RETURN;
END;
2 Functions in MS SQL Server
Trang 33Ví dụ 3:
33
Ví dụ sau đây tạo ra một hàm có giá trị bảng trả về danh sách các sản phẩm bao gồm tên sản phẩm, năm sản xuất và giá niêm yết cho một năm sản xuất cụ thể: (Inline)
2 Functions in MS SQL Server
Trang 34Khi hàm có giá trị bảng được tạo, bạn có thể tìm thấy nó trong Programmability > Functions > Table-valued Functions như trong hình sau:
2 Functions in MS SQL Server
Trang 35Để thực thi ta sử dụng lệnh:
Ta được kết quả:
2 Functions in MS SQL Server
Trang 37Sau khi tạo thành công:
2 Functions in MS SQL Server
Trang 38Để thực thi ta sử dụng lệnh:
Ta được kết quả:
2 Functions in MS SQL Server
Trang 39Khái niệm
Stored procedures: là tập hợp một hoặc nhiều câu
lệnh T-SQL thành một nhóm đơn vị xử lý logic và được lưu trữ trên Database Server Khi một câu lệnh gọi chạy stored procedure lần đầu tiên thì SQL Server sẽ chạy nó và lưu trữ vào bộ nhớ đệm, gọi
là plan cache, những lần tiếp theo SQL Server sẽ sử dụng lại plan cache nên sẽ cho tốc độ xử lý tối ưu
3 Procedures in MS SQL Server
Trang 40CREATE PROCEDURES
• Ta có câu lệnh đơn giản trong SQL như sau:
3 Procedures in MS SQL Server
Trang 41• Ta có thể chuyển nó thành một thủ tục đơn giản như sau:
CREATE PROCEDURES
3 Procedures in MS SQL Server
Trang 42CREATE PROCEDURES
• Cấu trúc đơn giản của việc tạo thủ tục là:
3 Procedures in MS SQL Server
Trang 43CREATE PROCEDURES
• Cấu trúc đầy đủ của việc tạo thủ tục là:
3 Procedures in MS SQL Server
Trang 44CREATE PROCEDURES
3 Procedures in MS SQL Server
Trang 46EXECUTE PROCEDURES
• Cấu trúc đơn giản của việc gọi thủ tục là:
3 Procedures in MS SQL Server
Trang 47Tương tự như đối với một procedure trong
C/C++, một procedure trong SQL có thể nhận vào các tham số khác nhau.
Đối với MS SQL, một procedure có thể có tối
đa 2100 tham số.
Trong MS SQL, tham số có 2 loại: tham số
thông thường và tham số OUTPUT.
Parameterizing
3 Procedures in MS SQL Server
Trang 48Đây là loại tham số mặc định khi không khai báo gì thêm Tham số loại này nhận một giá trị đầu vào và giá trị này được procedure sử dụng để tính toán
Tham số thông thường
3 Procedures in MS SQL Server
Trang 49Tham số dạng này được sử dụng để lấy giá trị trả về từ procedures
Tham số OUTPUT
3 Procedures in MS SQL Server
Trang 50Khi khai báo một procedure với tham số, tham số có thể được gán giá trị mặc định
Giá trị mặc định cho tham số
3 Procedures in MS SQL Server
Trang 51Đối với một procedure, sau khi khởi tạo, nếu muốn thêm/xóa tham số cho nó, ALTER PROCEDURE được sử dụng
Thêm/xóa tham số cho procedure
3 Procedures in MS SQL Server
Trang 52Trong MS SQL, có hai cách để truyền tham số vào procedure
1 Truyền tham số trực tiếp (positional parameters)
2 Truyền tham số theo tên (named parameters)
Truyền tham số vào procedure
3 Procedures in MS SQL Server
Trang 53Tham số được truyền trực tiếp vào procedure theo thứ tự khi khai báo
Truyền tham số trực tiếp
3 Procedures in MS SQL Server
Trang 54Tham số được truyền vào procedure theo tên của tham số.
Truyền tham số theo tên
3 Procedures in MS SQL Server
Trang 55Cho cơ sở dữ liệu như hình, Tạo function cho biết số lượng khách hàng theo địa chỉ bất kỳ nhận vào từ tham số với điều kiện là khách hàng có tổng số tiền vay từ trước đến nay từ
200 triệu trở lên:
4 Exercises
Trang 57Cho cơ sở dữ liệu như hình, tạo stored procedure liệt kê những thông tin của đầu sách, thông tin tựa sách và số lượng sách hiện chưa được mượn của một đầu sách cụ thể (ISBN)
4 Exercises