Oracle (und PostgreSQL) haben:
- %TYP
- %ROWTYPE
%TYP
%TYPE
wird verwendet, um Variablen in Bezug auf den Datentyp einer Spalte in einer bestehenden Tabelle zu deklarieren:
DECLARE v_id ORDERS.ORDER_ID%TYPE
Der Vorteil hierbei ist, dass bei einer Änderung des Datentyps der Datentyp der Variablen synchron bleibt.
Referenz:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/fundamentals.htm#i6080
%ROWTYPE
Dies wird in Cursorn verwendet, um eine einzelne Variable so zu deklarieren, dass sie einen einzelnen Datensatz aus der Ergebnismenge eines Cursors oder einer Tabelle enthält, ohne dass einzelne Variablen (und ihre Datentypen) angegeben werden müssen. Beispiel:
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;
/