1. Trang chủ
  2. » Công Nghệ Thông Tin

Stored procedure va function

14 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

CTT102 – Cơ sở liệu Tháng 1/2013 Stored Procedure Function Tóm tắt nội dung thực hành: Lập trình mơi trường SQL Server với Stored Procedure Function Bộ môn Hệ thống thông tin Khoa Công nghệ thông tin ĐH Khoa học tự nhiên TP HCM MỤC LỤC Mục tiêu tóm tắt nội dung .1 Hướng dẫn chi tiết 2.1 Stored Procedure (Đọc Stored Procedure Procedure) 2.1.1 Giới thiệu .1 2.1.2 Cú pháp 2.1.3 Ví dụ .4 2.2 Function 2.2.1 Giới thiệu .7 2.2.2 Cú pháp 2.2.3 Ví dụ .7 Bài tập lớp Bài tập nhà 11 STORED PROCEDURE VÀ FUNCTION Mục tiêu tóm tắt nội dung Sau hồn thành thực hành sinh viên biết được: - Kỹ thuật viết hàm thủ tục SQL Server Hướng dẫn chi tiết 2.1 Stored Procedure (Đọc Stored Procedure Procedure) 2.1.1 Giới thiệu Khi chú ng ta tạ o mộ t ứng dụ ng với Microsoft SQL Server, ngô n ngữ lậ p trình Transact-SQL là ngô n ngữ chính giao tiế p giữa ứng dụ ng và database củ a SQL Server Khi chú ng ta tạ o cá c chương trình bà ng Transact-SQL, hai phương phá p chính có thể dù ng để lưu trữ và thực thi cho cá c chương trình là : - Chú ng ta có thể lưu trữ cá c chương trình cụ c bộ và tạ o cá c ứng dụ ng để gởi cá c lệ nh đế n SQL Server và xử lý cá c kế t quả , - Chú ng ta có thể lưu trữ những chương trình như cá c stored procedure SQL Server và tạ o ứng dụ ng để gọ i thực thi cá c stored procedure và xử lý cá c kế t quả Đạ c tính củ a Stored-procedure SQL Server : - Chấ p nhậ n những tham số và o và trả về những giá trị được chứa cá c tham số để gọ i những thủ tụ c hoạ c xử lý theo lô - Chứa cá c lệ nh củ a chương trình để thực hiệ n cá c xử lý database, bao gồ m cả lệ nh gọ i cá c thủ tụ c khá c thực thi - Trả về cá c trạ ng thá i giá trị để gọ i những thủ tụ c hoạ c thực hiệ n cá c xử lý theo lô để cho biế t việ c thực hiệ n thà nh cô ng hay thấ t bạ i, nế u thấ t bạ i thì lý vì thấ t bạ i Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang Ta có thể dù ng Transact–SQL EXCUTE để thực thi cá c stored procedure Stored procedure khá c với cá c hà m xử lý là giá trị trả về củ a chú ng khô ng chứa tê n và chú ng khô ng được sử dụ ng trực tiế p biể u 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 lầ n và lưu trữ database mộ t lầ n, chương trình chú ng ta có thể gọ i nó với số lầ n bấ t kỳ Stored procedure có thể được chỉ rõ mộ t người nà o đó tạ o và sự thay đổ i 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: nế u sự xử lý yê u cầ u mộ t đoạ n source code Transact – SQL khá lớn hoạ c việ c thực thi mang tính lạ p 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à tố i ưu hó a lầ n thực thi đầ u tiê n và mộ t phiê n bả n dịch củ a chú ng đó sẽ được lưu bộ nhớ để sử dụ ng cho lầ n sau, nghĩa là những lầ n thực hiệ n sau chú ng khô ng cầ n phả i phâ n tích cú phá p và tố i ưu lạ i, mà chú ng sẽ sử dụ ng kế t quả đã được biê n dịch lầ n đầ u tiê n - Stored procedure có thẻ là m giả m bớt vá n đè kẹ t đường truyè n mạ ng: giả sử mộ t xử lý mà có sử dụ ng hà ng tram 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ẽ tố t hơn, vì nế u khô ng thực hiệ n chú ng ta phả i gởi hà ng tram lệ nh đó lê n mạ ng và điề u nà y sẽ dẫ n đế n tình trạ ng kẹ t mạ ng - Stored procedure có thẻ sử dụ ng vá n đè bả o mạ t củ a má y: vì người sử dụ ng có thể được phâ n cấ p những quyề n để sử dụ ng cá c stored procedure nà y, thậ m chí họ khô ng được phé p thực thi trực tiế p những stored procedure nà y 2.1.2 Cú pháp Mộ t Stored procedure được định nghĩa gồ m những thà nh phầ n chính sau: - Tê n củ a stored procedure - Cá c tham số - Thâ n củ a stored procedure: bao gồ m cá c lệ nh củ a Transact-SQL dù ng để thực thi procedure Mộ t stored procedure được tạ o bà ng lệ nh Create Procedure, và có thể thay đổ i bà ng cá ch dù ng lệ nh Alter Procedure, và có thể xó a bà ng cá ch dù ng lệ nh Drop Procedure lậ p lệ nh củ a Transact – SQL Tạo procedure: CREATE PROCEDURE procedure_name {@parameter data_type input/output }/*cá c biế n tham số và o ra*/ AS [khai bá o cá c biế n cho xử lý ] {Các câu lệ nh transact-sql} RETURN value Stored procedure trả giá trị khơng Một số lưu ý viết stored procedure: Ghi 1, mộ t dòng /* Ghi Nhiề u dò ng */ /*3 Khai bá o biế n*/ DECLARE @parameter_name data_type /*4 Gá n giá trị cho biế n*/ SET @parameter_name=value SELECT @parameter_name=column FROM … /*5 In thơng báo hình*/ print N‘Chuỗi thơng báo unicode’ /*6 Thông báo lỗi */ raiserror (N‘Nội dung thông báo lỗi ’, 16, 1) /*7 Lệnh rẽ nhánh */ Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang IF (điều kiện-có thể sử dụng câu truy vấn từ khoá EXISTS) BEGIN {Các lệnh thoả điều kiện / có lệnh khơng cần BEGIN … END} END /*8 Lệnh rẽ nhánh có ELSE */ IF (điều kiện-có thể sử dụng câu truy vấn từ khoá EXISTS) BEGIN {Các lệnh thoả điều kiện / có lệnh khơng cần BEGIN … END} END ELSE BEGIN {Các lệnh không thoả điều kiện / có lệnh khơng cần BEGIN … END} END /*9 Vòng lặp WHILE (Lưu ý: Khơng có vịng lặp FOR) */ WHILE ( điều kiện ) BEGIN {Các lệnh thoả điều kiện / có lệnh khơng cần BEGIN … END} END Biên dịch: Chọ n đoạn mã lệ nh Tạ o stored-procedure  F5 Thực thi procedure: EXEC procedure_name Stored-proc khô ng tham số EXEC procedure_name Para1_value, Para2_value, Stored-proc có tham số Lấy giá trị trả stored procedure: EXEC @bien = procedure_name Stored-proc khô ng tham số EXEC @bien = procedure_name Para1_value, Para2_value, Stored-proc có tham số 2.1.3 Ví dụ Ví dụ 1: Viết stored procedure tính tổng số: Tạo CREATE PROCEDURE sp_Tong @So1 int, @So2 int, @Tong int out AS SET @Tong = @So1 + @So2; Biê n dịch stored-procedure→F5 Kiể m tra Declare @Sum int Exec sp_Tong 1, -2, @Sum out Print @Sum Ví dụ 2: Viết stored procedure tính tổng số chẳn từ mn: Tạo CREATE PROCEDURE sp_TongChanMN @m int, @n int AS Declare @tong int Declare @i int Set @tong = Set @i = @m While (@i < @n) BEGIN IF (@i % = 0) SET @tong = @tong + @i SET @i = @i + END Print @tong Biê n dịch stored-procedure→F5 Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang Kiể m tra Exec sp_TongChanMN 1, 20 Ví dụ 3: Viết stored procedure kiểm tra tồn giáo viên theo mã: Tạo CREATE PROCEDURE sp_KiemTraGVTonTai @MaGV char(9) AS IF ( EXISTS (SELECT * FROM GIAOVIEN WHERE MAGV=@MAGV) ) Print N‘Giáo viên tồn tại’ ELSE Print N‘Không tồn giáo viên ! ’ + @MaGV Biê n dịch stored-procedure→F5 Kiể m tra Exec sp_KiemTraGVTonTai ‘001’ Ví dụ 4: Viết stored procedure xuất danh sách giáo viên môn: Tạo CREATE PROCEDURE sp_DanhSachGiaoVien @MaBM char(9) AS SELECT * FROM GIAOVIEN WHERE MABM=@MaBM Biê n dịch stored-procedure→F5 Kiể m tra Exec sp_DanhSachGiaoVien ‘HTTT’ 2.2 Function 2.2.1 Giới thiệu Trong SQL Server ta có thể viế t hà m và lấ y giá trị trả về Cá c dạ ng hà m có thể viế t như sau : - Hà m trả về giá trị vô hướng (scalar value) : varchar, int, - Hà m trả về giá trị là bả ng tạ m (inline table-valued) : table 2.2.2 Cú pháp Tạo hàm: CREATE FUNTION function_name ( [@parameter_name parameter_data_type] ) RETURNS [return Data-type] /*Returns có ‘s’ */ AS Begin return ([scalar value]) End Tạo hàm trả bảng (table): CREATE FUNTION function_name ( [@parameter_name parameter_data_type] ) RETURNS table AS return [select command] 2.2.3 Ví dụ Ví dụ 5: Viết hàm tính tuổi dựa vào ngày sinh Tạo hàm CREATE FUNTION fTinhTuoi ( @ngaysinh datetime ) RETURNS int AS BEGIN Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang return year(getdate()) – year(@ngaysinh) END Biên dịch: F5 Kiểm tra print dbo.fTinhTuoi(‘1/1/2000’) SELECT MAGV, dbo fTinhTuoi (NgaySinh) FROM GIAOVIEN Ví dụ 6: Viết hàm lấy danh sách giáo viên môn HTTT Tạo hàm CREATE FUNTION fDSGV_HTTT ( ) RETURNS table AS
 return (SELECT * FROM GIAO VIEN WHERE MABM=’HTTT’) Biên dịch: F5 Kiểm tra SELECT * FROM dbo.fDSGV_HTTT ( ) Bài tập lớp Yêu cầu: Viết stored procedure sau: a In câu chào “Hello World !!!” b In tổng số c Tính tổng số (sử dụng biến output để lưu kết trả về) d In tổng số (Sử dụng lại stored procedure Tính tổng số) e In tổng số nguyên từ m đến n f Kiểm tra số ngun có phải số ngun tố hay khơng g In tổng số nguyên tố đoạn m, n h Tính ước chung lớn số nguyên i Tính bội chung nhỏ số nguyên Viết stored procedure sau: j Xuất toàn danh sách giáo viên k Tính số lượng đề tài mà giáo viên thực l In thông tin chi tiết giáo viên(sử dụng lệnh print): Thông tin cá nhân, Số lượng đề tài tham gia, Số lượng thân nhân giáo viên m Kiểm tra xem giáo viên có tồn hay không (dựa vào MAGV) n Kiểm tra quy định giáo viên: Chỉ thực đề tài mà mơn giáo viên làm chủ nhiệm o Thực thêm phân công cho giáo viên thực công việc đề tài: o Kiểm tra thông tin đầu vào hợp lệ: giáo viên phải tồn tại, công việc phải tồn tại, thời gian tham gia phải >0 o Kiểm tra quy định câu n p Thực xoá 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, …) báo lỗi q In danh sách giáo viên phòng ban 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ý có, … r Kiểm tra quy định giáo viên a, b: Nếu a trưởng mơn c b lương a phải cao lương b (a, b: mã giáo viên) s Thêm giáo viên: Kiểm tra quy định: Không trùng tên, tuổi > 18, lương > t Mã giáo viên xác định tự động theo quy tắc: Nếu có giáo viên 001, 002, 003 MAGV giáo viên 004 Nếu có giáo viên 001, 002, 005 MAGV giáo viên 003 Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang Thời lượng: 02 4 Bài tập nhà Cho lược đồ CSDL: PHỊNG MãPhịng KHÁCH Mã KH ĐẶT PHỊNG Mã Tình LoạiPhịng Họ tên Địa Mã KH Đơn giá Điện Mã Phòng Ngày ĐP Ngày trả Thành tiền Ghi chú:   ĐẶT PHỊNG: Lưu thơng tin đặt phịng khách hàng Các thông tin Ngày trả, Thành tiền cập nhật khách hàng trả phịng khơng có khách hàng đặt phịng Tình trạng (PHỊNG): Rãnh, Bận Yêu cầu: Viết stored procedure sau: Tên stored procedure: spDatPhong Nội dung: ghi nhận thơng tin đặt phịng khách hàng xuống sở liệu Tham số yêu cầu: mã khách hàng (@makh), mã phòng (@maphong), ngày đặt phòng (@ngaydat) Lưu ý: Mã đặt phòng số nguyên phải phát sinh tự động theo cách sau: mã đặt phòng phát sinh = mã đặt phòng lớn + Các yêu cầu kiểm tra tính toán: - Kiểm tra mã khách hàng phải hợp lệ (phải xuất bảng KHÁCH HÀNG) Kiểm tra mã phịng hợp lệ (phải xuất bảng PHỊNG) Chỉ đặt phịng tình trạng phịng “Rảnh” Nếu kiểm tra hợp lệ ghi nhận thơng tin đặt phòng xuống CSDL (Ngày trả thành tiền đặt phòng NULL) Sau đặt phòng thành cơng phải cập nhật tình trạng phịng “Bận” Yêu cầu khác: Phải có diễn giải lời bước thực Stored procedure/function Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 11 Tên stored procedure: spTraPhong Nội dung: ghi nhận thơng tin trả phịng khách hàng xuống sở liệu Tham số yêu cầu: mã đặt phòng (@madp), mã khách hàng (@makh) Các u cầu kiểm tra tính tốn: - Kiểm tra tính hợp lệ mã đặt phịng, mã khách hàng: Hợp lệ khách hàng có thực việc đặt phịng Ngày trả phịng ngày hành Tiền tốn tính theo cơng thức: Tien = Số ngày mượn x đơn giá phòng Phải thực việc cập nhật tình trạng phịng “Rảnh” sau ghi nhận thơng tin trả phịng u cầu khác: Phải có diễn giải lời bước thực Thời lượng: 03 HẾT

Ngày đăng: 09/04/2023, 06:29

Xem thêm: