Tải bản đầy đủ (.doc) (38 trang)

Cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 38 trang )

MỤC LỤC
DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT...........................................................3
DANH MỤC BẢNG BIỂU...................................................................................3
DANH MỤC HÌNH ẢNH.....................................................................................3
PHẦN MỞ ĐẦU...................................................................................................4
CHƯƠNG I: XÂY DỰNG CƠ SỞ DỮ LIỆU......................................................5
1. Đặc tả cơ sở dữ liệu:......................................................................................5
2. Lược đồ quan hệ cơ sở dữ liệu quản lý sinh viên:.........................................5
3. Sơ đồ Database Diagrams:............................................................................8
4. Cơ sở dữ liệu quản lý sinh viên.....................................................................8
5. Truy vấn dữ liệu...........................................................................................12
CHƯƠNG II: THỦ TỤC LƯU TRỮ (STORED PROCEDURE)......................13
1. Stored procedure là gì?................................................................................13
2. Phân loại thủ tục..........................................................................................13
2.1. Thủ tục do người dùng định nghĩa (User-defined Stored Procedure):. 13
2.2 Thủ tục lưu trữ tạm thời (Temporary Stored Procedure):......................14
2.3. Thủ tục lưu trữ hệ thống (System Stored Procedure):..........................14
2.4. Thủ tục lưu trữ mở rộng (Extended User-Defined Stored Procedure): 14
3. Thủ tục lưu trữ hệ thống (System Stored Procedure):.................................14
4. Thủ tục do người dùng định nghĩa (User-defined Stored Procedure):........17
4.1. Đặc điểm...................................................................................................17
4.2. Tạo thủ tục................................................................................................18
4.2.1. Cú pháp tạo thủ tục............................................................................18
4.2.2 Ví dụ:..................................................................................................19
CHƯƠNG III: HÀM (FUNCTION)...................................................................24
1. Function là gì?.............................................................................................24
2. Phân loại hàm..............................................................................................24
2.1 Hàm dựng sẵn........................................................................................24
2.2. Hàm do người dùng định nghĩa............................................................24
3. Hàm hệ thống..............................................................................................25



4. Hàm do người dùng định nghĩa...................................................................26
4.1. Đặc điểm...............................................................................................26
4.2. Cách tạo hàm........................................................................................27
4.3. Ví dụ về hàm tạo...................................................................................28
CHƯƠNG IV: SỰ KHÁC BIỆT GIỮA STORED PROCEDURE VÀ..............34
FUNCTION TRONG SQL SERVER..................................................................34
1. Điểm chung.................................................................................................34
2. Sự khác biệt cơ bản giữa Stored Procedure và Function.............................34
3. Sự khác biệt nâng cao giữa Stored Procedure và Function.........................34
4. Ví dụ sử dụng cả 2 Stored Procedure và Function......................................35
KẾT LUẬN.........................................................................................................37
TÀI LIỆU THAM KHẢO...................................................................................38

2


DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT
Ký hiệu
SP
SQL
CLR
DDL
DML

Tên tiếng Anh
Stored procedure
Structured Query
Language
Common Language

Runtime
Data Definition
Language
Data Manipulation

DLL

Language
Dynamic Link Library

T-SQL

Transact SQL

Tên tiếng Việt
Thủ tục lưu trữ
Ngơn ngữ truy vấn có cấu trúc
Thời gian chạy ngôn ngữ chung
Ngôn ngữ định nghĩa dữ liệu
Ngôn ngữ Thao tác Dữ liệu
thư viện liên kết động
Mở rộng thủ tục được sử dụng bởi SQL
Server.

DANH MỤC BẢNG BIỂU

DANH MỤC HÌNH ẢNH

3



PHẦN MỞ ĐẦU
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ được phát
triển bởi Microsoft. Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần
mềm có chức năng chính là lưu trữ và truy xuất dữ liệu theo yêu cầu của các ứng
dụng phần mềm khác. Có thể chạy trên cùng một máy tính hoặc trên một máy
tính khác trên mạng (bao gồm cả Internet).
Trong quá trình thực thi cơ sở dữ liệu, đôi khi chúng ta cần thực hiện liên
tục một câu hoặc khối lệnh dài, phức tạp để đáp ứng các nhu cầu quản trị cơ sở
dữ liệu vì vậy một câu lệnh hoặc cấu trúc lệnh được sử dụng lặp đi lặp lại, dài
dòng một cách liên tục dẫn đến tình trạng có thể nhập sai, logic của dịng lệnh
khơng mạch lạc khó khăn trong việc nhìn lại, thao tác, gặp phải những rắc rối
trong quá trình thực hiện dẫn đến mất thời gian trong việc xử lý, chỉnh sửa.
Những điều trên cũng làm cho hiệu suất của việc thao tác cũng như hiệu suất
của cơ sở dữ liệu giảm đáng kể. Vì thế, một giải pháp hữu ích hơn đã được ra
đời, đó chính là việc thực hiện các thủ tục lưu trữ (stored procedure) hoặc sử
dụng các hàm (function).
Microsoft – một trong những nhà tiên phong trong hệ thống quản trị cơ sở
dữ liệu với hệ quản trị cơ sở dữ liệu SQL Server có nhiều chức năng trong việc
sử dụng các đối tượng như thủ tục lưu trữ và hàm. Và để có thể hiểu rõ hơn cách
sử dụng hai đối tượng này thì bài tiểu luận “Tìm hiểu về store procedure và
function trong sql” sẽ giúp giải đáp một phần nào về vấn đề này.
Bài viết của em gồm 4 chương:
CHƯƠNG I: XÂY DỰNG CƠ SỞ DỮ LIỆU
CHƯƠNG II: THỦ TỤC LƯU TRỮ (STORED PROCEDURE)
CHƯƠNG III: HÀM (FUNCTION)
CHƯƠNG IV: SỰ KHÁC BIỆT GIỮA STORED PROCEDURE VÀ
FUNCTION TRONG SQL SERVER

4



CHƯƠNG I: XÂY DỰNG CƠ SỞ DỮ LIỆU
1. Đặc tả cơ sở dữ liệu:
Trường đại học Ngân Hàng TPHCM xây dựng cơ sở dữ liệu cho việc
quản lý sinh viên. Nhà trường chia thành 7 khoa đào tạo và mỗi khoa có một mã
khoa, tên khoa riêng, số lượng chuyên đề đào tạo để thuận tiện cho việc quản lý.
Vì đào tạo theo mỗi khóa khác nhau nên nhà trường yêu cầu mỗi khóa phải có
mã, tên, năm bắt đầu nhập học và kết thúc chương trình đào tạo. Sinh viên trong
trường được cấp mã số sinh viên, họ tên, ngày sinh, giới tính,… để quản lý và
mỗi sinh viên đều có một lớp sinh hoạt để thuận tiện cho việc trao đổi với giảng
viên, nhà trường. Trường có nhiều chương trình đào tạo khác nhau: chính quy,
chất lượng cao, quốc tế cấp song bằng nên cần có mã, tên chương trình để phân
chia chương trình đào tạo. Nhà trường có nhiều mơn học khác nhau, nên cần có
mã mơn học, tên môn học, khoa đào tạo. Mỗi sinh viên trong trường yêu cầu
phải trên 4.0 để đạt tiêu chuẩn qua môn, bộ phận đào tạo và phân chia kết quả có
nhiệm vụ nhập lên hệ thống sinh viên đó đã học mơn gì, số lần thi bao nhiêu lần,
điểm số cuối môn để đánh giá chất lượng đào tạo sinh viên. Mỗi mơn học đều có
lịch giảng chi tiết bao gồm mã chương trình, mã lớp học phần, tên học phần, số
tín chỉ, địa điểm, số tiết. Lớp học có mã lớp, mã khóa học, mã khoa, chương
trình đào tạo, số lượng sinh viên.
2. Lược đồ quan hệ cơ sở dữ liệu quản lý sinh viên:
Khoa: Nhà trường chia thành 7 khoa đào tạo và mỗi khoa có một mã khoa, tên
khoa riêng, số lượng chuyên đề đào tạo để thuận tiện cho việc quản lý.
MaKhoa
varchar(10)

TenKhoa
nvarchar(100)
Bảng 1. 1: Bảng Khoa


SoLuongChuyenDe
int

KhoaHoc: Vì đào tạo theo mỗi khóa khác nhau nên nhà trường yêu cầu mỗi
khóa phải có mã, tên, năm bắt đầu nhập học và kết thúc chương trình đào tạo.
5


MaKhoaHoc
varchar(10)

TenKhoaHoc
NamBatDau
nvarchar(100)
Int
Bảng 1. 2: Bảng khóa học

NamKetThuc
int

SinhVien: Sinh viên trong trường được cấp mã số sinh viên, họ tên, ngày sinh,
giới tính,… sinh viên đều có một lớp sinh hoạt.
MaSV

NgaySin

HoTen

h

date

varchar(10) nvarchar(100)

GioiTinh

MaLop

DiaChi

(Foreign Key)
varchar(10)

nvarchar(5) nvarchar(10)

Bảng 1. 3: Bảng sinh viên
ChuongTrinh: Trường có nhiều chương trình đào tạo khác nhau: chính quy,
chất lượng cao, quốc tế cấp song bằng nên cần có mã, tên chương trình
MaCT

TenCT

varchar(10)

nvarchar(100)

Bảng 1. 4: Bảng chương trình đào tạo
MonHoc: Nhà trường có nhiều mơn học khác nhau, nên cần có mã môn học, tên
môn học, mã khoa đào tạo.
MaMH


MaKhoa (Foreign Key)

TenMH

varchar(20)

nvarchar(10)

nvarchar(100)

Bảng 1. 5: Bảng môn học

KetQua: Mỗi sinh viên trong trường yêu cầu phải trên 4.0 để đạt tiêu chuẩn qua
môn, bộ phận đào tạo và phân chia kết quả có nhiệm vụ nhập lên hệ thống sinh
viên đó đã học mơn gì, số lần thi bao nhiêu lần, điểm số cuối môn để đánh giá
chất lượng đào tạo sinh viên.
MaSV

MaMH

(Foreign Key)

(Foreign Key)

SoLanThi

Diem
6



varchar(10)

int
Bảng 1. 6: Bảng kết quả

float

varchar(20)

LichGiang: Mỗi môn học đều có lịch giảng chi tiết bao gồm mã chương trình,
mã khoa, mã mơn học, số tín chỉ, địa điểm, số tiết.
MaCT
(Foreign
Key)
varchar(10)

MaMH

MaKhoa

(Foreign

(Foreign Key)

SoTinChi

DiaDiem

SoTiet


nvarchar(100)

int

Key)

int
Bảng 1. 7: Bảng lịch giảng

varchar(10)

varchar(20)

Lop: Lớp học có mã lớp, mã khóa học, mã khoa, chương trình đào tạo, số lượng
sinh viên.
MaLop
varchar(15)

MaKhoaHoc

MaKhoa

MaCT

(Foreign Key)

(Foreign Key)

(Foreign Key)


varchar(15)

varchar(15)

varchar(15)

SoLuongSV
int

Bảng 1. 8: Bảng lớp

7


3. Sơ đồ Database Diagrams:

Hình 1. 1: Sơ đồ database diagrams quản lý sinh viên
4. Cơ sở dữ liệu quản lý sinh viên

Hình 1. 2: Cơ sở dữ liệu bảng khoa

8


Hình 1. 3: Cơ sở dữ liệu bảng khóa học

Hình 1. 4: Cơ sở dữ liệu bảng sinh viên

Hình 1. 5: Cơ sở dữ liệu bảng chương trình


9


Hình 1. 6: Cơ sở dữ liệu bảng mơn học

Hình 1. 7: Cơ sở dữ liệu bảng lịch giảng

10


Hình 1. 8: Cơ sở dữ liệu bảng lớp

11


Hình 1. 9: Cơ sở dữ liệu bảng kết quả
5. Truy vấn dữ liệu

Hình 1. 10: Danh sách sinh viên khoa “Hệ thống thơng tin quản lý” khóa đào tạo
2019 – 2025

12


CHƯƠNG II: THỦ TỤC LƯU TRỮ (STORED PROCEDURE)
1. Stored procedure là gì?
Thủ tục SQL được lưu trữ (SP) là một tập hợp các câu lệnh SQL và logic
lệnh sql, được biên dịch và lưu trữ trên cơ sở dữ liệu. Các thủ tục được lưu trữ
trong SQL cho phép chúng ta tạo các truy vấn SQL để được lưu trữ và thực thi

trên máy chủ. Các thủ tục đã lưu trữ cũng có thể được lưu vào bộ nhớ đệm và sử
dụng lại. Mục đích chính của các thủ tục được lưu trữ để ẩn các truy vấn SQL
trực tiếp khỏi mã và cải thiện hiệu suất của các hoạt động cơ sở dữ liệu như
chọn, cập nhật và xóa dữ liệu.
2. Phân loại thủ tục
Có thể phân loại cho thủ tục thành:
2.1. Thủ tục do người dùng định nghĩa (User-defined Stored Procedure):
-

Các thủ tục được lưu trữ do người dùng định nghĩa được tạo bởi các nhà

phát triển cơ sở dữ liệu hoặc quản trị viên cơ sở dữ liệu.
-

Các SP này chứa thêm một câu lệnh SQL nữa để chọn, cập nhật hoặc xóa

bản ghi khỏi bảng cơ sở dữ liệu.
-

Thủ tục lưu trữ do người dùng định nghĩa có thể nhận các tham số đầu

vào và trả về các tham số đầu ra.
-

Thủ tục lưu trữ do người dùng định nghĩa là hỗn hợp của các lệnh DDL và

DML.
Thủ tục do người dùng định nghĩa được phân thêm thành 2 loại:
-


T-SQL stored procedures: Các SP T-SQL nhận và trả về các tham số. Các

SP này xử lý các truy vấn Chèn, Cập nhật và Xóa có hoặc khơng có tham số và
trả về dữ liệu của các hàng dưới dạng đầu ra. Đây là một trong những cách phổ
biến nhất để viết SP trong SQL Server.
-

CLR stored procedures: CLR SP được viết bằng ngơn ngữ lập trình dựa

trên CLR như C # hoặc VB.NET và được thực thi bởi .NET Framework.

13


2.2 Thủ tục lưu trữ tạm thời (Temporary Stored Procedure):
Là một dạng thủ tục do người dùng xác định được lưu trữ trong CSDL
tempdb. Có hai loại thủ tục tạm thời bao gồm: cục bộ và toàn cục. Các thủ tục
lưu trữ tạm thời cục bộ có tiền tố là (#); chúng chỉ hiển thị với kết nối người
dùng hiện tại và sẽ bị xóa khi kết nối bị đóng. Các thủ tục tạm thời tồn cục có
hai dấu số (##) là hai ký tự đầu tiên của tên chúng; chúng được hiển thị cho bất
kỳ người dùng nào sau khi chúng được tạo và chúng sẽ bị xóa vào cuối phiên
cuối cùng bằng cách sử dụng quy trình.
2.3. Thủ tục lưu trữ hệ thống (System Stored Procedure):
Đây là thủ tục được được tạo và thực thi bởi SQL Server cho các hoạt
động quản trị của máy chủ, tích hợp sẵn trong SQL Server dưới dạng lưu trữ vật
lý trong CSDL master và msdb. Trong hệ thống, các thủ tục này mang tiền tố là
sp_, thường đóng vai trị hỗ trợ cho các DBA các vấn đề liên quan đến quản trị
và an ninh dữ liệu.
2.4. Thủ tục lưu trữ mở rộng (Extended User-Defined Stored Procedure):
Các thủ tục mở rộng cho phép tạo các quy trình bên ngồi bằng ngơn ngữ

lập trình chẳng hạn như C. Các thủ tục này là các thư viện liên kết động (DLL)
mà một phiên bản của SQL Server có thể tự động tải và khởi động.
3. Thủ tục lưu trữ hệ thống (System Stored Procedure):
Trong SQL Server, nhiều hoạt động quản trị và thông tin có thể được thực
hiện bằng cách sử dụng các thủ tục được lưu trữ hệ thống. Các thủ tục được lưu
trữ hệ thống được nhóm thành các loại như sau:
Loại
Active Geo-Replication
Stored Procedures

Catalog Stored Procedures

Mô tả
Được sử dụng để quản lý các cấu hình Active GeoReplication trong Cơ sở dữ liệu Azure SQL
Được sử dụng để triển khai các chức năng từ điển dữ liệu
ODBC và tách các ứng dụng ODBC khỏi các thay đổi đối
với các bảng hệ thống cơ bản.

14


Change Data Capture
Stored Procedures

Được sử dụng để bật, tắt hoặc báo cáo về các đối tượng
chứa dữ liệu thay đổi.

Cursor Stored Procedures

Được sử dụng để thực hiện chức năng biến con trỏ.


Data Collector Stored
Procedures

Được sử dụng để làm việc với bộ thu thập dữ liệu và các
thành phần sau: bộ thu thập, mục thu thập và loại bộ sưu
tập.

Database Engine Stored
Procedures

Được sử dụng để bảo trì chung của SQL Server Database
Engine.

Database Mail Stored
Được sử dụng để thực hiện các hoạt động e-mail từ bên
Procedures (Transact-SQL) trong một phiên bản của SQL Server.
Database Maintenance Plan Được sử dụng để thiết lập các nhiệm vụ bảo trì cốt lõi
Stored Procedures
được yêu cầu để quản lý hiệu suất cơ sở dữ liệu.
Distributed Queries Stored
Procedures

Được sử dụng để thực hiện và quản lý các truy vấn phân
tán.

Filestream and FileTable
Stored Procedures

Được sử dụng để cấu hình và quản lý các tính năng

FILESTREAM và FileTable.

Firewall Rules Stored
Procedures

Được sử dụng để cấu hình firewall của Cơ sở dữ liệu
Azure SQL.

Full-Text Search Stored
Procedures

Được sử dụng để triển khai và truy vấn các chỉ mục toàn
văn.

General Extended
Stored Procedures

Được sử dụng để cung cấp một giao diện từ một phiên
bản của SQL Server đến các chương trình bên ngồi cho
các hoạt động bảo trì khác nhau.

Log Shipping Stored
Procedures

Được sử dụng để định cấu hình, sửa đổi và giám sát các
nhật ký cấu hình vận chuyển.

Management Data
Warehouse Stored
Procedures


Dùng để cấu hình kho dữ liệu quản lý.

15


OLE Automation Stored
Procedures
Policy-Based
Management Stored
Procedures
PolyBase stored
procedures

Được sử dụng để kích hoạt các đối tượng tự động hóa tiêu
chuẩn để sử dụng trong một lô Transact-SQL tiêu chuẩn.

Được sử dụng để quản lý dựa trên chính sách.
Thêm hoặc xóa một máy tính khỏi nhóm PolyBase scaleout.

Query Store Stored
Procedures (TransactSQL)
Replication Stored
Procedures

Được sử dụng để điều chỉnh hiệu suất.

Được sử dụng để quản lý sao chép.

Security Stored

Procedures

Dùng để quản lý bảo mật.

Snapshot Backup Stored
Procedures

Được sử dụng để xóa bản sao lưu FILE_SNAPSHOT
cùng với tất cả ảnh chụp nhanh của nó hoặc để xóa ảnh
chụp nhanh tệp sao lưu riêng lẻ.

Spatial Index Stored
Procedures

Được sử dụng để phân tích và cải thiện hiệu suất lập chỉ
mục của các chỉ mục không gian.

SQL Server Agent
Stored Procedures

Được sử dụng bởi SQL Server Profiler để theo dõi hiệu
suất và hoạt động.

SQL Server Profiler
Stored Procedures

Được sử dụng bởi SQL Server Agent để quản lý các hoạt
động theo lịch trình và theo hướng sự kiện.

Stretch Database Stored

Procedures

Được sử dụng để quản lý cơ sở dữ mở rộng.

Temporal Tables Stored
Procedures

Sử dụng cho bảng thời gian

XML Stored Procedures

Được sử dụng để quản lý văn bản XML.

Bảng 2. 1: Các nhóm thủ tục lưu trữ hệ thống
16


4. Thủ tục do người dùng định nghĩa (User-defined Stored Procedure):
4.1. Đặc điểm
• Bảo mật cao:
-

Nhiều người dùng và chương trình khách có thể thực hiện các hoạt động

trên các đối tượng cơ sở dữ liệu cơ bản thông qua một thủ tục đóng gói sẵn,
ngay cả khi người dùng và chương trình khơng có quyền trực tiếp trên các đối
tượng cơ bản đó. Thủ tục kiểm sốt những q trình và hoạt động được thực
hiện và bảo vệ các đối tượng cơ sở dữ liệu bên dưới. Điều này loại bỏ yêu cầu
cấp quyền ở cấp đối tượng riêng lẻ và đơn giản hóa các lớp bảo mật.
• Tái sử dụng:

-

Sau khi một thủ tục được hình thành, chúng có thể được gọi ở nhiều nơi

để sử dụng lại.
• Thực thi nhanh chóng:
-

Máy chủ SQL Server tận dụng lợi thế của việc các đoạn mã trong thủ tục

đã được biên dịch và lưu trữ sẵn trong cơ sở dữ liệu. Điều đó đồng nghĩa với
việc thủ tục sẽ được thực thi nhanh hơn so do đã được biên dịch từ trước, thay vì
phải mất nhiều thời gian để biên dịch các đoạn lệnh được gửi đến SQL Server
mà chưa được lưu trữ.
• Tính nhất qn:
-

Thủ tục lưu trữ thiết lập các ràng buộc dữ liệu để đảm bảo tính nhất quán.

Người dùng không thể tùy tiện thao tác với dữ liệu để làm mất tính nhất quán
của dữ liệu. Đồng thời người dùng cũng không biết được cấu trúc bên dưới của
thủ tục làm cho việc sử dụng thủ tục đúng với mục đích ngun bản.
• Giảm tải trên đường truyền:
-

Các lệnh trong một thủ tục được thực hiện dưới dạng một loạt mã duy

nhất. Điều này có thể làm giảm đáng kể lưu lượng mạng giữa máy chủ và máy
khách vì chỉ có lệnh gọi thực thi thủ tục được gửi qua mạng.


17


4.2. Tạo thủ tục
4.2.1. Cú pháp tạo thủ tục
CREATE [ OR ALTER ] { PROC | PROCEDURE }
[schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY]
] [ ,...n ]
[ WITH [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
Trong đó:
-

schema_name: Tên của lược đồ chứa thủ tục, các thủ tục bị ràng buộc bởi lược

đồ. Nếu tên lược đồ không được chỉ định khi tạo thủ tục thì lược đồ mặc định của
người dùng đang tạo sẽ tự động được gán cho thủ tục.
-

procedure_name: Tên của thủ tục, đồng thời phải tuân thủ các quy tắc cho số

nhận dạng và phải là duy nhất trong lược đồ.
-

@ parameter: Một tham số được khai báo trong thủ tục. Chỉ định tên tham số

bằng cách sử dụng dấu tại (@) làm ký tự đầu tiên.

-

[type_schema_name] <kiểu_dữ_liệu>: Kiểu dữ liệu của tham số và lược đồ

chứa kiểu dữ liệu.
-

VARYING: Chỉ định tập kết quả được hỗ trợ làm tham số đầu ra. Tham số này

được xây dựng động bởi thủ tục và nội dung của nó có thể thay đổi. Chỉ áp dụng cho
các tham số con trỏ .
-

default: Giá trị mặc định cho một tham số. Nếu một giá trị mặc định được xác

định cho một tham số, thủ tục có thể được thực thi mà không cần chỉ định giá trị cho
tham số đó.
-

OUT | OUTPUT: Chỉ ra rằng tham số là một tham số đầu ra. Sử dụng tham số

OUTPUT để trả về giá trị cho trình gọi của thủ tục.
-

READONLY: Chỉ ra rằng tham số không thể được cập nhật hoặc sửa đổi trong

phần thân của thủ tục.

18



-

RECOMPILE: Chỉ định cho thủ tục biên dịch lại mỗi khi được gọi.

-

ENCRYPTION: Nếu người dùng khơng có quyền truy cập vào bảng hệ thống

hoặc tệp cơ sở dữ liệu thì khơng thể truy xuất được nội dung của thủ tục.
-

FOR REPLICATION: Chỉ định rằng thủ tục được tạo để sao chép.

-

EXECUTE AS: Chỉ định ngữ cảnh bảo mật để thực thi thủ tục được lưu trữ sau

khi nó được truy cập.
-

[BEGIN] … [END]: Một hoặc nhiều câu lệnh Transact-SQL bao gồm phần

thân của thủ tục. Bạn có thể sử dụng các từ khóa BEGIN và END tùy chọn để bao gồm
các câu lệnh.

Để thực thi thủ tục ta sử dụng:
EXECUTE | EXEC tên_thủ_tục [danh_sách_tham_số];
4.2.2 Ví dụ:
VD2: Kiểm tra mơn học của sinh viên có số lần thi thứ 1 trả về kết quả là

“Đậu” khi sinh viên có điểm lớn hơn hoặc bằng 4.0 ngược lại nếu sinh viên
đó dưới 4.0 trả về kết quả “Không đậu”
- Tạo thủ tục lưu trữ

Hình 2. 1: Tạo thủ tục trong VD2
- Truy vấn dữ liệu

19


Hình 2. 2: Truy vấn dữ liệu trong VD2

Hình 2. 3: Truy vấn dữ liệu trong VD2
VD3: Trả về danh sách các sinh viên thuộc một khoa bao gồm mã sinh viên,
họ tên, mã lớp
- Tạo thủ tục lưu trữ

Hình 2. 4: Tạo thủ tục lưu trữ trong VD3

- Truy vấn dữ liệu

20


Hình 2. 5: Truy vấn dữ liệu VD3
VD4: Trả ra kết quả điểm của sinh viên sau mỗi lần thi qua mơn học được
nhập
- Tạo thủ tục lưu trữ

Hình 2. 6: Tạo thủ tục lưu trữ VD4

- Truy vấn dữ liệu

Hình 2. 7: Truy vấn dữ liệu VD4
VD5: Kiểm tra điều kiện nếu số lần thi bằng 1 và điểm lớn hơn hoặc bằng 4
thì trả về kết quả danh sách sinh viên đậu mơn học đó
21


- Tạo thủ tục lưu trữ

Hình 2. 8: Tạo thủ tục lưu trữ VD5
- Truy vấn dữ liệu

Hình 2. 9: Truy vấn dữ liệu VD5

VD6: Trả về kết quả sinh viên đã đậu mơn học đó khi điểm lớn hơn hoặc
bằng 4, nếu sinh viên đó thi lại nhiều lần thì trả về kết quả cuối cùng
- Tạo thủ tục lưu trữ
22


Hình 2. 10: Tạo thủ tục lưu trữ VD6
- Truy vấn dữ liệu

Hình 2. 11: Truy vấn dữ liệu VD6

23


CHƯƠNG III: HÀM (FUNCTION)

1. Function là gì?
Các hàm SQL chỉ đơn giản là các chương trình con, được sử dụng phổ
biến và được sử dụng lại trong các ứng dụng cơ sở dữ liệu SQL để xử lý hoặc
thao tác dữ liệu. Tất cả các hệ thống cơ sở dữ liệu SQL đều có các cơng cụ DDL
và DML để hỗ trợ việc tạo và duy trì cơ sở dữ liệu.
DDL chịu trách nhiệm về các nhiệm vụ liên quan đến tạo, sửa đổi và bảo
trì cơ sở dữ liệu, trong khi DML chịu trách nhiệm về các nhiệm vụ liên quan
đến thao tác dữ liệu, về cơ bản có nghĩa là DML là giao diện lập trình của cơ sở
dữ liệu. DML, giống như các ngơn ngữ lập trình khác, bao gồm các lệnh được
sử dụng để xử lý hoặc tính tốn dữ liệu trong cơ sở dữ liệu. DML cũng hỗ trợ
các hàm và chúng được gọi là các hàm SQL. Hàm SQL là các chương trình nhỏ
có thể có khơng hoặc nhiều tham số đầu vào nhưng chỉ có thể trả về một giá trị.
2. Phân loại hàm
Có thể phân chia hàm thành 2 loại: hàm dựng sẵn và hàm do người dùng
định nghĩa, trong đó:
2.1 Hàm dựng sẵn
Là các hàm tiêu chuẩn đã được cung cấp bởi hệ thống cơ sở dữ liệu SQL
và hầu hết các hàm này được định nghĩa rõ ràng trong các tiêu chuẩn SQL của
ANSI (American National Standards Institute). Các hàm dựng sẵn này có thể
được chia nhỏ hơn thành các hàm tổng hợp hoặc hàm vô hướng. Chẳng hạn như
ABS () được sử dụng để thực hiện các phép tính, các hàm khác như GETDATE
() được sử dụng để lấy giá trị hệ thống, dữ liệu hiện tại hoặc các hàm khác,
LEFT () được sử dụng để thao tác dữ liệu dạng văn bản.
2.2. Hàm do người dùng định nghĩa
Các chức được tạo ra bởi người dùng cho một mục đích cụ thể. Các hàm
do người dùng xác định có thể trả về một giá trị đơn lẻ hoặc một tập hợp các giá
trị. Trong đó chia thành:

24



- Hàm vô hướng (Scalar Function): Các hàm vô hướng do người dùng
định nghĩa trả về một giá trị dữ liệu duy nhất của kiểu được xác định trong mệnh
đề RETURNS. Đối với một hàm vô hướng nội tuyến, giá trị vô hướng trả về là
kết quả của một câu lệnh duy nhất. Đối với một hàm vô hướng đa lệnh, thân
hàm có thể chứa một loạt các câu lệnh Transact-SQL trả về một giá trị duy nhất.
Kiểu trả về có thể là bất kỳ kiểu dữ liệu nào ngoại trừ text, ntext, image, cursor
và timestamp.
- Hàm kiểu bảng (Table-Valued Functions): Các hàm kiểu bảng do người
dùng định nghĩa trả về một kiểu dữ liệu bảng có thể sử dụng như một bảng
thơng thường. Đối với một hàm có giá trị bảng nội tuyến, khơng có thân hàm thì
bảng là tập hợp kết quả của một câu lệnh SELECT.
3. Hàm hệ thống
Loại

Aggregate
Functions

Configuration
Functions
Cursor
Functions
Date and
Time
Functions

Mơ tả
Hàm thực hiện phép tính
trên một tập giá trị và trả về
một giá trị duy nhất.


Hàm thực hiện trả về thơng
tin về cài đặt tùy chọn cấu
hình hiện tại

Ví dụ
APPROX_COUNT_DISTINCT,
AVG, COUNT, COUNT_BIG,
GROUPING, GROUPING_ID,
MAX, MIN, SUM, VAR, VARP
@@DATEFIRST, @@DBTS,
@@LANGID, @@LANGUAGE,
@@MAX_CONNECTIONS,
@@NESTLEVEL, @@OPTIONS

Các hàm vô hướng này trả
về thông tin về con trỏ

@@CURSOR_ROWS,
@@FETCH_STATUS,
CURSOR_STATUS

Hàm thực hiện thao tác trên
các loại dữ liệu thời gian

GETDATE, SYSDATETIME,
GETUTCDATE, DAY, MONTH,
YEAR, ISDATE, PARTS, ARTS

25



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×