Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was bedeutet %Type in Oracle SQL?

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;
/