Teradata - Makrolar
Makro, Makro adını çağırarak saklanan ve çalıştırılan bir SQL deyimleri kümesidir. Makroların tanımı Veri Sözlüğü'nde saklanır. Kullanıcılar, Makroyu yürütmek için yalnızca EXEC ayrıcalığına ihtiyaç duyar. Kullanıcılar, Makro içinde kullanılan veritabanı nesneleri üzerinde ayrı ayrıcalıklara ihtiyaç duymazlar. Makro ifadeleri tek bir işlem olarak yürütülür. Makrodaki SQL ifadelerinden biri başarısız olursa, tüm ifadeler geri alınır. Makrolar parametreleri kabul edebilir. Makrolar DDL ifadeleri içerebilir, ancak bu Makrodaki son ifade olmalıdır.
Makrolar Oluşturun
Makrolar, CREATE MACRO deyimi kullanılarak oluşturulur.
Sözdizimi
Aşağıda CREATE MACRO komutunun genel sözdizimi verilmiştir.
CREATE MACRO <macroname> [(parameter1, parameter2,...)] (
<sql statements>
);
Misal
Aşağıdaki Çalışan tablosunu düşünün.
Çalışan Hayır | İsim | Soyadı | Doğum günü |
---|---|---|---|
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 |
Aşağıdaki örnek, Get_Emp adlı bir Makro oluşturur. Çalışan tablosundan kayıtları almak için bir seçme ifadesi içerir.
CREATE MACRO Get_Emp AS (
SELECT
EmployeeNo,
FirstName,
LastName
FROM
employee
ORDER BY EmployeeNo;
);
Makroları Yürütme
Makrolar, EXEC komutu kullanılarak yürütülür.
Sözdizimi
Aşağıdaki EXECUTE MACRO komutunun sözdizimidir.
EXEC <macroname>;
Misal
Aşağıdaki örnek, Get_Emp Makro adlarını çalıştırır; Aşağıdaki komut yürütüldüğünde, tüm kayıtları çalışan tablosundan alır.
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
Parametreli Makrolar
Teradata Makroları parametreleri kabul edebilir. Bir Makro içinde bu parametrelere; (noktalı virgül).
Aşağıda, parametreleri kabul eden bir Makro örneği verilmiştir.
CREATE MACRO Get_Emp_Salary(EmployeeNo INTEGER) AS (
SELECT
EmployeeNo,
NetPay
FROM
Salary
WHERE EmployeeNo = :EmployeeNo;
);
Parametreli Makroları Yürütme
Makrolar, EXEC komutu kullanılarak yürütülür. Makroları yürütmek için EXEC ayrıcalığına ihtiyacınız var.
Sözdizimi
EXECUTE MACRO ifadesinin sözdizimi aşağıdadır.
EXEC <macroname>(value);
Misal
Aşağıdaki örnek, Get_Emp Makro adlarını çalıştırır; Çalışan numarasını parametre olarak kabul eder ve o çalışan için çalışan tablosundan kayıtları çıkarır.
EXEC Get_Emp_Salary(101);
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- ------------
101 36000