Giáo trình Hệ quản trị cơ sở dữ liệu SQL server - Chương 7: Hàm do người dùng định nghĩa - Lê Thị Minh Nguyện

pdf 7 trang huongle 4120
Bạn đang xem tài liệu "Giáo trình Hệ quản trị cơ sở dữ liệu SQL server - Chương 7: Hàm do người dùng định nghĩa - Lê Thị Minh Nguyện", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_he_quan_tri_co_so_du_lieu_sql_server_chuong_7_ham.pdf

Nội dung text: Giáo trình Hệ quản trị cơ sở dữ liệu SQL server - Chương 7: Hàm do người dùng định nghĩa - Lê Thị Minh Nguyện

  1. 10/03/2015 TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN THÀNH PHỐ HỒ CHÍ MINH CHƯƠNG 7. Hàm do người dùng định nghĩa GV: Lê Thị Minh Nguyện Email: leminhnguyen@itc.edu.vn Nội dung Khái niệm Các loại Function Nhận xét Tạo UDF Ví dụ 2 1
  2. 10/03/2015 Khái niệm UDFs 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 tham 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. 3 Các loại Function Hàm xác định: luôn trả về cùng giá trị nếu giá trị các tham số được truyền vào là như nhau. Hàm không xác định: có thể cho ra kết quả khác biệt tại mỗi thời điểm chúng được gọi 4 2
  3. 10/03/2015 Nhận xét UDFs là sự kết hợp của 2 đối tượng View và Store Procedure khắc phục một số hạn chế của View và Store Procedure . SP không thể là một phần của câu lệnh SELECT nhưng UDFs thì có . View không hỗ trợ đệ quy trong khi UDFs thì có thể làm được điều này. 5 Tạo UDF Cú pháp CREATE FUNCTION [Tên_Function](tham số) RETURNS kiểu_dữ_liệu_trả_về|Table|Biến_bảng AS BEGIN Các lệnh Return END 6 3
  4. 10/03/2015 Tạo UDF Returns: thiết lập kiểu dữ liệu trả về của UDFs. Có 2 cách thiết lập chính . Trả về giá trị kiểu vô hướng: một chuỗi, một giá trị logic hoặc một kiểu số. . Trả về một bảng: có thể trả về hai loại bảng • Inline table: khắc phục được nhược điểm không có tham số của VIEW. Có nghĩa rằng UDFs loại inline table giống như một VIEW có tham số. • Multistatement table: UDFs loại này giống với Store Procedure. Loại này luôn trả về 1 biến table. Thực hiện các câu SELECT phức tạp, cho phép thực hiện các câu lệnh logic khác như UPDATE, INSERT INTO 7 Ví dụ 1 RETURNS chứa duy nhất từ khoá table  Tạo View như sau CREATE VIEW DS_SinhVien AS Select * From SINHVIEN Where MaLop = ‘C5CT09’ CREATE FUNCTION DS_SinhVien(@MaLop char(6)) RETURNS Table AS Return (Select * From SinhVien Where MaLop=@MaLop) Chứa một câu SELECT đơn giản nằm trong cặp 8 dấu ngoặc đơn. 4
  5. 10/03/2015 Ví dụ 2 CREATE FUNCTION F_DSHangHoa(@LoaiHang varchar(50), @PhanTram numeric ) RETURNS @DSHangHoa Table (MaMH char(10), TenMH varchar(50), DonGiaKhuyenMai numeric) AS Begin INSERT INTO @DSHangHoa(MaMH, TenMH, DonGiaKhuyenMai) Select MaMH, TenMH, DonGiaHienHanh From HANGHOA Where loaihang = @LoaiHang Update @DSHangHoa Set DonGiaKhuyenMai= DonGiaKhuyenMai- (DonGiaKhuyenMai * @Phantram)/100 9 Return End Ví dụ 3 CREATE FUNCTION DonGiaHienHanh(@MaMH char(5)) RETURNS float AS BEGIN Return(Select DonGiaHienHanh From HANGHOA WHERE MaMH = @MaMH) END 10 5
  6. 10/03/2015 Ví dụ 4 CREATE FUNCTION Test_function(@b int, @c int) RETURNS int as BEGIN declare @kq int if @b>2 set @kq=@b+@c else set @kq=@b+@c+1 return @kq END 11 Ví dụ 5 CREATE FUNCTION GiaiThua(@x int) RETURNS int AS Begin Declare @i int If @x>20 OR @x IS NULL Set @i = NULL Else If @x < 2 Set @i = @x Else Set @i = @x * dbo.GiaiThua(@x-1) Return @i End 12 SELECT dbo.GiaiThua(3) 6
  7. 10/03/2015 TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN THÀNH PHỐ HỒ CHÍ MINH 7