Teradata - Quy trình lưu trữ
Một thủ tục được lưu trữ chứa một tập hợp các câu lệnh SQL và các câu lệnh thủ tục. Chúng có thể chỉ chứa các câu lệnh thủ tục. Định nghĩa của thủ tục được lưu trữ được lưu trữ trong cơ sở dữ liệu và các tham số được lưu trữ trong các bảng từ điển dữ liệu.
Ưu điểm
Các thủ tục được lưu trữ giúp giảm tải mạng giữa máy khách và máy chủ.
Cung cấp bảo mật tốt hơn vì dữ liệu được truy cập thông qua các thủ tục được lưu trữ thay vì truy cập trực tiếp.
Cung cấp khả năng bảo trì tốt hơn vì logic nghiệp vụ được kiểm tra và lưu trữ trong máy chủ.
Tạo thủ tục
Các thủ tục được lưu trữ được tạo bằng cách sử dụng câu lệnh CREATE PROCEDURE.
Cú pháp
Sau đây là cú pháp chung của câu lệnh CREATE PROCEDURE.
CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] )
BEGIN
<SQL or SPL statements>;
END;
Thí dụ
Hãy xem xét Bảng lương sau đây.
Nhân viên Không | Tổng | Khấu trừ | NetPay |
---|---|---|---|
101 | 40.000 | 4.000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5.000 | 70.000 |
Ví dụ sau đây tạo một thủ tục được lưu trữ có tên InsertSalary để chấp nhận các giá trị và chèn vào Bảng lương.
CREATE PROCEDURE InsertSalary (
IN in_EmployeeNo INTEGER, IN in_Gross INTEGER,
IN in_Deduction INTEGER, IN in_NetPay INTEGER
)
BEGIN
INSERT INTO Salary (
EmployeeNo,
Gross,
Deduction,
NetPay
)
VALUES (
:in_EmployeeNo,
:in_Gross,
:in_Deduction,
:in_NetPay
);
END;
Các thủ tục thực thi
Các thủ tục đã lưu trữ được thực thi bằng câu lệnh CALL.
Cú pháp
Sau đây là cú pháp chung của câu lệnh CALL.
CALL <procedure name> [(parameter values)];
Thí dụ
Ví dụ sau gọi thủ tục được lưu trữ InsertSalary và chèn các bản ghi vào Bảng lương.
CALL InsertSalary(105,20000,2000,18000);
Khi truy vấn trên được thực thi, nó sẽ tạo ra kết quả sau và bạn có thể thấy hàng được chèn trong bảng Lương.
Nhân viên Không | Tổng | Khấu trừ | NetPay |
---|---|---|---|
101 | 40.000 | 4.000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5.000 | 70.000 |
105 | 20.000 | 2.000 | 18.000 |