Mô tả
Stored Procedure (Thủ tục lưu trữ) là tập hợp câu lệnh SQL được lưu trong database để tái sử dụng. Có tham số đầu vào/ra (OUTPUT), không trả về giá trị như function mà trả về trạng thái thành công/thất bại.
Tạo Procedure (CREATE PROCEDURE)
CREATE {PROCEDURE | PROC} [schema_name.] ten_thu_tuc
[@tham_so [schema_kieu.] kieu_du_lieu [VARYING] [= mac_dinh] [OUT | OUTPUT | READONLY], ...]
[WITH {ENCRYPTION | RECOMPILE | EXECUTE AS Clause}]
[FOR REPLICATION]
AS
BEGIN
-- khai báo
-- phần thực thi
END;
Tham số chính:
- schema_name: Schema sở hữu.
- ten_thu_tuc: Tên procedure.
- @tham_so: Tham số (IN/OUT/OUTPUT/READONLY).
- OUT/OUTPUT: Tham số đầu ra.
- READONLY: Không ghi đè trong proc.
- ENCRYPTION: Mã hóa mã nguồn.
- RECOMPILE: Không cache plan.
- FOR REPLICATION: Chỉ chạy trong replication.
Ví dụ
CREATE PROCEDURE spNhanvien
@nhanvien_name VARCHAR(50) OUT
AS
BEGIN
DECLARE @nhanvien_id INT = 8;
IF @nhanvien_id < 10
SET @nhanvien_name = 'Smith';
ELSE
SET @nhanvien_name = 'Lawrence';
END;
Thực thi Procedure
USE [test];
GO
DECLARE @site_name VARCHAR(50);
EXEC spNhanvien @site_name OUT;
PRINT @site_name;
GO
Xóa Procedure (DROP PROCEDURE)
DROP PROCEDURE ten_thu_tuc;
DROP PROCEDURE spNhanvien;