Oracle (et PostgreSQL) ont :
- %TYPE
- %ROWTYPE
%TYPE
%TYPE
permet de déclarer des variables en relation avec le type de données d'une colonne dans une table existante :
DECLARE v_id ORDERS.ORDER_ID%TYPE
L'avantage ici est que si le type de données change, le type de données variable reste synchronisé.
Référence :http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/fundamentals.htm#i6080
%ROWTYPE
Ceci est utilisé dans les curseurs pour déclarer une seule variable pour contenir un seul enregistrement du jeu de résultats d'un curseur ou d'une table sans avoir besoin de spécifier des variables individuelles (et leurs types de données). Ex :
DECLARE
CURSOR c1 IS
SELECT last_name, salary, hire_date, job_id
FROM employees
WHERE employee_id = 120;
-- declare record variable that represents a row fetched from the employees table
employee_rec c1%ROWTYPE;
BEGIN
-- open the explicit cursor and use it to fetch data into employee_rec
OPEN c1;
FETCH c1 INTO employee_rec;
DBMS_OUTPUT.PUT_LINE('Employee name: ' || employee_rec.last_name);
END;
/