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

Bài giảng Microsoft SQL server: Chương 7 - Phạm Mạnh Cương

19 4 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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 349,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 7 trang bị cho người học những hiểu biết cơ bản về Stored procedure. Chương này gồm có những nội dung chính sau: Khái niệm Stored procedure, tạo stored procedure bằng lệnh create procedure, tạo stored procedure bằng công cụ quản lý management studio.

Trang 1

CHƯƠNG VII

STORED PROCEDURE

Giảng viên: Phạm Mạnh Cương

CHƯƠNG VII

STORED PROCEDURE

Giảng viên: Phạm Mạnh Cương

1

Trang 2

I- Khái niệm:

• Là một chương trình con được xây dựng bởi những phát biểu của T-SQL

• Có tham số Input và Output

• Được lưu trữ trong CSDL với 1 tên phân biệt

• Cho phép gọi thực hiện từ các ngôn ngữ lập trình

khác.

Stored Procedure thường dùng thực hiện truy vấn hay

cập nhật dữ liệu theo yêu cầu của người dùng.

Trang 3

II-Tạo Stored Procedure

3

1 Bằng Lệnh CREATE PROCEDURE

2 Bằng công cụ quản lý Management

Studio

Trang 4

1- Bằng Lệnh CREATE PROCEDURE:

Create Proc <sp_name>

[<các tham số hình thức>]

[With Recompile | Encryption | Recompile , Encryption]

As

[Begin]

<Các phát biểu>

[End]

Trang 5

Ví dụ: Tạo thủ tục liệt kê sản phẩm tồn kho

trong một tháng

5

Create Proc spTonKho(@Thang int = 8, @Nam int = 2005)

As

Begin

Select * From TonKho

Where Thang = @Thang And Nam = @Nam

End

Trang 6

Ví dụ: Tạo thủ tục trả về Doanh thu của một năm

Create Proc spDTNam (@Nam Smallint, @DoanhThu Float Output )

AS

Begin

Select @DoanhThu=Sum(SL*DGBan)

From HoaDon hd Inner Join CTHD ct On hd.SoHD=ct.SoHD

Where Year(NgayHD) = @Nam

End

Trang 7

1.1 Khai báo tham số hình thức của thủ tục:

7

Cú pháp: @par_name datatype [= default][OUTPUT] [,…n]

Có 2 loại tham số hình thức: Input và Output.

• Tham số Output dùng liên kết với một biến tại nơi gọi , nhận

giá trị của biến và trả giá trị về cho biến.

Ví dụ:

Create Proc spTonKho(@Thang int = 8, @Nam int = 2005)

Create Proc spDTNam(@Nam int, @DoanhThu Float Output)

• Tham số hình thức nhận giá trị mặc định khi không truyền

giá trị cho nó.

Trang 8

1.2 Thực hiện Stored Procedures có Tham số

• Cách 1 Truyền theo vị trí :

EXEC sp_name <exp> [OUTPUT] [,…n]

Ví dụ gọi thủ tục:

Create Proc spTonKho(@Thang int = 8, @Nam int = 2005)

Exec spTonKho 9, 2005

Sử dụng giá trị default : Exec spTonKho 9

• Cách 2 Truyền theo tên:

EXEC sp_name @par_name = <exp> [OUTPUT][,…n]

Ví dụ gọi thủ tục : Create Proc spTonKho(@Thang int = 8, @Nam int = 2005)

Trang 9

1.3 Nhận giá trị từ tham số

Output

9

• Phải dùng Biến với từ khóa Output trong lời gọi để nhận giá

trị từ tham số hình thức loại Output

Create Proc spDTNam(@Nam int, @DoanhThu Float Output)

Ví dụ: Thực hiện thủ tục spDTNam

Declare @DT Float

Exec spDTNam 2005, @DT Output

Print @DT

Hay

Declare @DT Float

Exec spDTNam @DoanhThu = @DT Output, @Nam = 2005

Print @DT

Trang 10

III- Các Phát Biểu Điều Khiển:

1 Biến cục bộ

2 Phát biểu If Else

3 Phát biểu WHILE

4 Phát biểu: RETURN [Biểu thức số nguyên]

5 Phát biểu: GOTO <label>

Trang 11

1- Biến cục bộ :

11

a) Khai báo biến cục bộ: DECLARE @VarName data_type [, n]

Ví dụ: Declare @n TinyInt , @m TinyInt, @y SmallInt

• Biến cục bộ phải bắt đầu bằng ký hiệu @ trước tên của nó

• Phạm vi biến: Biến chỉ khả dụng bên trong thủ tục, hàm hoặc một gói

lệnh đã khai báo biến

• Giá trị ban đầu của biến là NULL

b) Gán giá trị cho biến cục bộ:

Cách 1 : SET @VarName = <Expression>

Ví dụ: Declare @Ngay DateTime

set @Ngay ='2005/5/15'

print @Ngay

Cách 2 : SELECT @VarName = <Expression> [FROM …]

– Nếu SELECT trả về nhiều dòng, thì biến được gán giá tri từ dòng

cuối cùng trả về bởi Select

Trang 12

Ví dụ: Tạo thủ tục liệt kê danh sách mặt

hàng có

đơn giá cao nhất và thấp nhất.

CREATE PROCEDURE spMatHangCaoNhatThapNhat

AS

Begin

Declare @Dgmax float, @Dgmin float

SELECT @Dgmax = Max(DonGia), @Dgmin = Min(DonGia)

FROM MatHang

SELECT * FROM MatHang

WHERE DonGia = @Dgmax OR DonGia = @Dgmin

Trang 13

2- Phát biểu If Else:

IF <Boolean Expression>

BEGIN

<Các lệnh>

END

ELSE

BEGIN

<Các lệnh>

END

Create Proc spTonKho(@Thang int, @Nam int)

As

If @Thang<1 Or @Thang>12 Begin

Print 'Thang sai' End

Else Begin

Select * From TonKho Where Thang = @Thang And Nam = @Nam

End

13

Trang 14

3- Phát biểu WHILE :

WHILE <BTDK>

BEGIN

<Các lệnh>

[CONTINUE]

[BREAK]

END

Ví dụ: Thủ tục tính tổng S = 1 + 3 + … + (2N-1)

Create Proc spTongLe ( @N int ) AS

DECLARE @I int, @S int SET @I = 1

SET @S = 0 WHILE @I <= 2*@N -1 BEGIN

Set @S = @S + @I

Set @I = @I + 2 END

Trang 15

4- Phát biểu RETURN [Biểu thức số

nguyên]:

15

Dùng kết thúc thủ tục và trả về nơi gọi một số nguyên

Mặc định là 0 nếu không chỉ định

• Gọi hàm và nhận giá trị Return của thủ tục:

EXEC @var_name = sp_name [@par_name =] <exp>[,…n]

Ví dụ: Gọi thực hiện thủ tục spTongLe( @N int )

declare @s int

Exec @s = spTongLe 9

print 'Tong la = ' + Cast (@s As Varchar)

Trang 16

Ví dụ: Thủ tục Thêm hóa đơn

As

If Exists(Select * From HoaDon Where SoHD = @SoHD)

Begin

Print 'Trung so hoa don' Return 1

End

If Not Exists(Select * From NhanVien Where MaNV = @MaNV)

Begin

Print 'Sai Ma nhan vien ' Return 2

End

If @NgayHD > GetDate()

Begin

Print 'Ngay lap hoa don lon hon ngay hien hanh ' Return 3

End

Insert HoaDon (SoHD, MaNV, NgayHD) Values(@SoHD, @MaNV, @NgayHD)

if @@Error <> 0

Begin

Trang 17

5- Phát biểu: GOTO <label>

17

Create Proc spTongLe ( @N int )

AS

DECLARE @I int, @S int

SET @I = 1 SET @S = 0 Lap:

IF (@I > 2*@N -1) GoTo KetQua

Set @S = @S + @I Set @I = @I + 2

GoTo Lap

KetQua:

Return @S

Thuc hien thu tuc

Declare @KQ int Exec @KQ = spTongLe 9 Print @kq

Trang 18

IV- Sửa Xóa Thủ Tục:

1 Đổi Tên :

sp_Rename <OldName>, <NewName>

2 Xóa Thủ tục được lưu:

DROP PROC <spName>

3 Thay đổi nội dung thủ tục lưu trữ:

ALTER PROC spName

[Danh sách tham số]

[With Recompile | Encryption | Recompile, Encryption]

Trang 19

CẢM ƠN

19

Ngày đăng: 11/05/2021, 02:49

TỪ KHÓA LIÊN QUAN