Teradata - Macro
Macro là một tập hợp các câu lệnh SQL được lưu trữ và thực thi bằng cách gọi tên Macro. Định nghĩa về Macro được lưu trữ trong Từ điển dữ liệu. Người dùng chỉ cần đặc quyền EXEC để thực thi Macro. Người dùng không cần các đặc quyền riêng biệt trên các đối tượng cơ sở dữ liệu được sử dụng bên trong Macro. Các câu lệnh macro được thực hiện như một giao dịch duy nhất. Nếu một trong các câu lệnh SQL trong Macro bị lỗi, thì tất cả các câu lệnh sẽ được khôi phục lại. Macro có thể chấp nhận các tham số. Macro có thể chứa các câu lệnh DDL, nhưng đó phải là câu lệnh cuối cùng trong Macro.
Tạo Macro
Macro được tạo bằng cách sử dụng câu lệnh CREATE MACRO.
Cú pháp
Sau đây là cú pháp chung của lệnh CREATE MACRO.
CREATE MACRO <macroname> [(parameter1, parameter2,...)] (
<sql statements>
);
Thí dụ
Hãy xem xét bảng Nhân viên sau đây.
Nhân viên Không | Tên đầu tiên | LastName | Ngày sinh |
---|---|---|---|
101 | Mike | James | 1/5/1980 |
104 | Alex | Stuart | 11/6/1984 |
102 | Robert | Williams | 3/5/1983 |
105 | Robert | James | 12/1/1984 |
103 | Peter | Paul | 4/1/1983 |
Ví dụ sau đây tạo một Macro có tên là Get_Emp. Nó chứa một câu lệnh select để lấy các bản ghi từ bảng nhân viên.
CREATE MACRO Get_Emp AS (
SELECT
EmployeeNo,
FirstName,
LastName
FROM
employee
ORDER BY EmployeeNo;
);
Thực thi Macro
Macro được thực thi bằng lệnh EXEC.
Cú pháp
Sau đây là cú pháp của lệnh EXECUTE MACRO.
EXEC <macroname>;
Thí dụ
Ví dụ sau đây thực thi các tên Macro Get_Emp; Khi lệnh sau được thực thi, nó lấy tất cả các bản ghi từ bảng nhân viên.
EXEC Get_Emp;
*** Query completed. 5 rows found. 3 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo FirstName LastName
----------- ------------------------------ ---------------------------
101 Mike James
102 Robert Williams
103 Peter Paul
104 Alex Stuart
105 Robert James
Macro được tham số hóa
Teradata Macro có thể chấp nhận các tham số. Trong Macro, các tham số này được tham chiếu với; (dấu chấm phẩy).
Sau đây là một ví dụ về Macro chấp nhận các tham số.
CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS (
SELECT
EmployeeNo,
NetPay
FROM
Salary
WHERE EmployeeNo = :EmployeeNo;
);
Thực thi Macro tham số hóa
Macro được thực thi bằng lệnh EXEC. Bạn cần đặc quyền EXEC để thực thi Macro.
Cú pháp
Sau đây là cú pháp của câu lệnh EXECUTE MACRO.
EXEC <macroname>(value);
Thí dụ
Ví dụ sau đây thực thi các tên Macro Get_Emp; Nó chấp nhận nhân viên không làm tham số và trích xuất các bản ghi từ bảng nhân viên cho nhân viên đó.
EXEC Get_Emp_Salary(101);
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- ------------
101 36000