1 Tài liệu hướng dẫn: Stored Procedure Tài liệu hướng dẫn: Stored Procedure Người thực Hoàng Anh Tú Nội dung Giới thiệu Stored Procedure 2.1 Tạo Stored Procedure . 2.1.1 Tạo SQL Server Management Studio (SSMS) 2.1.2 Tạo script . 2.2 Thực thi Stored Procedure 2.2.1 Thực thi giao diện SSMS . 2.2.2 Thực thi script . 2.3 Thay đổi nội dung Stored Procedure . 2.3.1 Thực thi script . 2.4 Xóa Stored Produre 2.4.1 Thực thi script . Tham số Stored Procedure 3.1 Tham số đầu vào 3.2 Tham số đầu . Trả giá trị Stored Procedure . 4.1 Trả giá trị từ lệnh RETURN 4.2 Trả liệu từ lệnh SELECT Kết hợp Stored Procedure với lệnh T-SQL 5.1 Ứng dụng thêm sinh viên vào sở liệu 5.2 Ứng dụng trả danh sách sinh viên lớp . 1.Giới thiệu Giới thiệu Tài liệu hướng dẫn thực hành Stored Procedure Hệ quản trị sở liệu SQL Server. Nội dung bao gồm phần sau: Hướng dẫn cú pháp Stored Procedure SQL Server. Cách gọi, sử dụng lại Stored Procedure tạo. Một số ví dụ Stored Procedure. Stored Procedure Khi tạo ứng dụng với Microsoft SQL Server, ngôn ngữ lập trình T-SQL (Transact-SQL) ngôn ngữ giao tiếp ứng dụng database SQL Server. Khi tạo chương trình T-SQL, hai phương pháp dùng để lưu trữ thực thi cho chương trình là: - Chúng ta lưu trữ chương trình cục tạo ứng dụng để gởi lệnh đến SQL Server xử lý kết quả. Chúng ta lưu trữ chương trình stored procedure SQL Server tạo ứng dụng để gọi thực thi stored procedure xử lý kết quả. Đặc tính Stored-procedure SQL Server: - Stored Procedure hàm cho phép truyền tham số vào trả giá trị. Bao gồm tập lệnh T-SQL để xử lý chức sở liệu. Ta dùng T–SQL EXECUTE để thực thi stored procedure. Stored procedure khác với hàm xử lý(User-defined Function) giá trị trả chúng không chứa tên chúng không sử dụng trực tiếp biểu thức. Stored procedure có thuận lợi so với chương trình T-SQL lưu trữ cục là: - - Stored procedure cho phép điều chỉnh chương trình cho phù hợp: Chúng ta có tạo stored procedure lần lưu trữ database lần, chương trình gọi với số lần bất kỳ. Stored procedure rõ người tạo thay đổi chúng hoàn toàn độc lập với source code chương trình. Stored procedure cho phép thực thi nhanh hơn: xử lý yêu cầu đoạn source code Transact – SQL lớn việc thực thi mang tính lặp lặp lại stored procedure thực nhanh việc thực hàng loạt lệnh Transact-SQL. Chúng phân tích cú pháp tối ưu hóa lần thực thi phiên dịch chúng lưu nhớ Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 2.Stored Procedure - - để sử dụng cho lần sau, nghĩa lần thực sau chúng không cần phải phân tích cú pháp tối ưu lại, mà chúng sử dụng kết biên dịch lần đầu tiên. Stored procedure làm giảm bớt vấn đề kẹt đường truyền mạng: giả sử xử lý mà có sử dụng hàng trăm lệnh Transact-SQL việc thực thông qua dòng lệnh đơn, việc thực thông qua stored procedure tốt hơn, không thực phải gởi hàng trăm lệnh lên mạng điều dẫn đến tình trạng kẹt mạng. Stored procedure sử dụng vấn đề bảo mật máy: người sử dụng phân cấp quyền để sử dụng stored procedure này, chí họ không phép thực thi trực tiếp stored procedure này. 2.1 Tạo Stored Procedure 2.1.1 Tạo SQL Server Management Studio (SSMS) Hình 1. Tạo Stored Procedure chương trình SSMS Tạo giao diện SSMS phát sinh script tạo Stored Procedure sẵng, ta cần thêm nội dung vào phần thân hàm. Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 2.Stored Procedure 2.1.2 Tạo script Cú pháp đơn giản: CREATE PROCEDURE procedure_name @parameter1 data_type [output] /*các tham số*/, @parameter2 data_type [output] AS BEGIN [khai báo biến cho xử lý] {Các câu lệnh transact-sql} END GO Phần [output] phần có không để xác định loại tham số. Ví dụ: CREATE PROCEDURE XinChao @hoTen nvarchar(50) AS BEGIN print N'Xin chào ' + @hoTen END GO CREATE PROC Hello AS BEGIN print N'Hello ' + @hoTen END GO 2.2 Thực thi Stored Procedure 2.2.1 Thực thi giao diện SSMS 2.2.2 Thực thi script Sử dụng lệnh EXECUTE (có thể viết tắt EXEC) để thực thi stored procedure. EXECUTE procedure_name parameter_value1, parameter_value2, EXEC procedure_name parameter_value1, parameter_value2, . Ví dụ: EXEC XinChao N'Hiệp' Đoạn lệnh tạo kết sau: Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 3.Tham số Stored Procedure Hình 2. Kết thực thi Stored Procedure “XinChao” 2.3 Thay đổi nội dung Stored Procedure 2.3.1 Thực thi script ALTER PROCEDURE procedure_name @parameter1 data_type [output] /*các tham số*/, @parameter2 data_type [output] AS BEGIN [khai báo biến cho xử lý] {Các câu lệnh transact-sql} END GO Lúc này, SQL Server thay stored procedure có tên “procedure_name” stored procedure có tên. 2.4 Xóa Stored Produre 2.4.1 Thực thi script DROP PROCEDURE procedure_name DROP PROC procedure_name Tham số Stored Procedure Stored Procedure hàm lưu trữ sẵng sở liệu. Hàm có loại tham số chính: tham số đầu vào tham số đầu ra. 3.1 Tham số đầu vào Đây loại tham số mặc định, cho phép truyền giá trị vào stored procedure để hỗ trợ xử lý. Ví dụ: CREATE PROC Cong Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 3.Tham số Stored Procedure @So1 int, @So2 int AS BEGIN declare @Kq int set @Kq = @So1 + @So2 print @Kq END GO exec Cong 1, Kết đoạn lệnh cho kết “3” Hình 3. Kết thực thi stored procedure cộng số nguyên 3.2 Tham số đầu Tham số dùng để nhận kết trả từ stored procedure. Sử dụng từ khóa OUTPUT (hoặc viết tắt OUT) để xác định tham số. Ví dụ: ALTER PROC Tru @So1 int, @So2 int, @Kq int output AS BEGIN set @Kq = @So1 - @So2 END GO Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 4.Trả giá trị Stored Procedure DECLARE @test int EXEC Tru 1, 2, @test output PRINT @test Kết in hình “-1”. Trả giá trị Stored Procedure Ngoài cách sử dụng tham số đầu để trả giá trị. Có thể sử dụng RETURN để trả giá trị từ stored procedure câu lệnh SELECT truy vấn liệu. 4.1 Trả giá trị từ lệnh RETURN Lệnh RETURN sử dụng để trả giá trị từ stored procedure mà không cần sử dụng tham số đầu ra. Giá trị trả có số đặc điểm: - - Giá trị trả số nguyên. Nếu trả loại giá trị khác lúc thực thi stored procedure báo lỗi (ngoại trừ số kiểu liệu tự động chuyển đổi sang kiểu số nguyên như:float, double, .). Giá trị trả mặc định 0. Có thể nhận giá trị trả biến. Sau gọi RETURN, stored procedure trả giá trị kết thúc xử lý. Ví dụ: CREATE PROC Test @Lenh int AS BEGIN if (@Lenh = 1) return if (@Lenh = 2) begin declare @float float set @float = 2.6 return @float end if (@Lenh = 3) begin declare @char varchar(50) set @char = 'hello' return @char end END GO Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 4.Trả giá trị Stored Procedure declare @test float EXEC @test = Test print @test Nếu giá trị truyền vào 1: stored procedure trả giá trị “1”. Nếu giá trị truyền vào 2: stored procedure trả giá trị “2”. Nếu giá trị truyền vào 3: stored procedure báo lỗi chuyển chuỗi „hello‟ thành số nguyên. Nếu truyền giá trị khác: stored procedure trả giá trị “0”. 4.2 Trả liệu từ lệnh SELECT Mỗi lệnh SELECT đặt stored procedure trả bảng. CREATE PROC TestSelect AS BEGIN SELECT * FROM SINHVIEN SELECT * FROM LOP END GO EXEC TestSelect Kết in hình là: Hình 4. Kết thực stored procedure “TestSelect” Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 5.Kết hợp Stored Procedure với lệnh T-SQL Kết hợp Stored Procedure với lệnh T-SQL Các stored procedure thông thường tạo nhằm giúp thực số chức cần thao tác sở liệu. Khi đó, ta cần phải kết hợp nhiều lệnh T-SQL thao tác với liệu (SELECT, INSERT, UPDATE, DELETE) cấu trúc điều khiển (IF, WHILE, CASE, .). 5.1 Ứng dụng thêm sinh viên vào sở liệu CREATE PROC ThemSinhVien @mssv varchar(10), @hoTen nvarchar(100), @namSinh int, @danToc nvarchar(20), @maLop varchar(10) AS BEGIN IF(EXISTS(SELECT * FROM SinhVien s WHERE s.ma = @mssv)) BEGIN PRINT N'Mã số sinh viên ' + @mssv + N' tồn tại' RETURN -1 END IF(NOT EXISTS(SELECT * FROM Lop L WHERE L.ma = @maLop)) BEGIN PRINT N'Mã số lớp ' + @maLop + N' chưa tồn tại' RETURN -1 END INSERT INTO SinhVien(ma, hoTen, namSinh, danToc, maLop) VALUES(@mssv, @hoTen, @namSinh, @danToc, @maLop) RETURN /* procedure tự trả không RETURN */ END GO DECLARE @kq INT EXEC @kq = ThemSinhVien '0212005', N'Nguyễn Văn A', 1987, 'Kinh', 'TH2002/01' PRINT @kq 5.2 Ứng dụng trả danh sách sinh viên lớp CREATE PROC XuatDanhSachSinhVien @maLop varchar(10) AS BEGIN IF(NOT EXISTS(SELECT * FROM Lop L WHERE L.ma = @maLop)) BEGIN PRINT N'Mã số lớp ' + @maLop + N' chưa tồn tại' RETURN -1 END SELECT * FROM Lop l where l.ma = @maLop /*procedure trả không RETURN*/ END GO Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM . Tài liệu hướng dẫn: Stored Procedure 1 Tài liệu hướng dẫn: Stored Procedure Người thực hiện Hoàng Anh Tú Nội dung 1 Giới thiệu 2 2 Stored Procedure cơ bản 2 2.1 Tạo Stored Procedure. 1 Giới thiệu Tài liệu này hướng dẫn thực hành Stored Procedure trong Hệ quản trị cơ sở dữ liệu SQL Server. Nội dung chính bao gồm những phần sau: Hướng dẫn cú pháp Stored Procedure trong. thay thế stored procedure có tên procedure_ name” bằng 1 stored procedure mới có cùng tên. 2.4 Xóa Stored Produre 2.4.1 Thực thi bằng script DROP PROCEDURE procedure_name DROP PROC procedure_ name