Teradata - Procedura memorizzata
Una procedura memorizzata contiene una serie di istruzioni SQL e istruzioni procedurali. Possono contenere solo dichiarazioni procedurali. La definizione della procedura memorizzata viene memorizzata nel database ei parametri vengono memorizzati nelle tabelle del dizionario dei dati.
Vantaggi
Le stored procedure riducono il carico di rete tra il client e il server.
Fornisce una maggiore sicurezza poiché si accede ai dati tramite procedure memorizzate invece di accedervi direttamente.
Offre una migliore manutenzione poiché la logica aziendale viene testata e archiviata nel server.
Procedura di creazione
Le stored procedure vengono create utilizzando l'istruzione CREATE PROCEDURE.
Sintassi
Di seguito è riportata la sintassi generica dell'istruzione CREATE PROCEDURE.
CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] )
BEGIN
<SQL or SPL statements>;
END;
Esempio
Considera la seguente tabella dei salari.
EmployeeNo | Schifoso | Deduzione | Retribuzione netta |
---|---|---|---|
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 |
L'esempio seguente crea una stored procedure denominata InsertSalary per accettare i valori e inserirli nella tabella Salary.
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;
Esecuzione delle procedure
Le stored procedure vengono eseguite utilizzando l'istruzione CALL.
Sintassi
Di seguito è riportata la sintassi generica dell'istruzione CALL.
CALL <procedure name> [(parameter values)];
Esempio
L'esempio seguente chiama la stored procedure InsertSalary e inserisce i record nella tabella Salary.
CALL InsertSalary(105,20000,2000,18000);
Una volta eseguita la query di cui sopra, produce il seguente output e puoi vedere la riga inserita nella tabella Salary.
EmployeeNo | Schifoso | Deduzione | Retribuzione netta |
---|---|---|---|
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 |