Thủ tục lưu trữ

Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Meghan Kwartler

IT Consultant

Thủ tục lưu trữ là gì?

Là gì?

Thủ tục

  • Nhận tham số đầu vào
  • Thực hiện thao tác (EXECUTE SELECT, INSERT, UPDATE, DELETE và lệnh SP khác)
  • Trả trạng thái (thành công/thất bại)
  • Trả tham số đầu ra
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Vì sao dùng thủ tục lưu trữ?

Vì sao?

  • Giảm thời gian thực thi
  • Giảm lưu lượng mạng
  • Hỗ trợ lập trình mô-đun
  • Tăng cường bảo mật
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Khác nhau ở điểm nào?

UDF

  • Phải trả về giá trị
    • Cho phép kiểu bảng
  • Được phép thực thi SELECT nhúng
  • Không có tham số output
  • Không INSERT, UPDATE, DELETE
  • Không gọi được SP
  • Không có xử lý lỗi

SP

  • Giá trị trả về là tùy chọn
    • Không hỗ trợ kiểu bảng
  • Không thể nhúng trong SELECT để thực thi
  • Trả tham số output và trạng thái
  • Cho phép INSERT, UPDATE, DELETE
  • Có thể gọi hàm và SP
  • Xử lý lỗi với TRY...CATCH
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

CREATE PROCEDURE với tham số OUTPUT

-- Bốn dòng đầu của mã
-- Tên SP phải là duy nhất 
CREATE PROCEDURE dbo.cuspGetRideHrsOneDay 
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
.......
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

CREATE PROCEDURE với tham số OUTPUT

CREATE PROCEDURE dbo.cuspGetRideHrsOneDay
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
SET NOCOUNT ON
BEGIN
SELECT 
  @RideHrsOut = SUM(
    DATEDIFF(second, PickupDate, DropoffDate)
  )/ 3600
FROM YellowTripData
WHERE CONVERT(date, PickupDate) = @DateParm
RETURN
END;
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Tham số Output so với giá trị trả về

Tham số Output

  • Có thể thuộc bất kỳ kiểu dữ liệu nào
  • Có thể khai báo nhiều tham số cho mỗi SP
  • Không thể là tham số kiểu bảng

Giá trị trả về

  • Dùng để báo thành công hoặc thất bại
  • Chỉ kiểu số nguyên
  • 0 là thành công, khác 0 là thất bại
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Quý vị đã sẵn sàng dùng CREATE PROCEDURE!

Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Preparing Video For Download...