Un tip obiect se poate gestiona în SQL*Plus sau SQL Developer. In blocuri, proceduri, pachete, se poate face gestiunea unui tip obiect numai cu instrucţiunea execute immediate sau cu pachetul DBMS_SQL.
Sintaxa de definire a tipului obiect este:CREATE [OR REPLACE] TYPE nume {IS | AS} OBJECT [UNDER nume_parinte] ( nume_atribut tip_data [, nume_atribut tip_data] ... [{MAP | ORDER} MEMBER def_functie,] [MEMBER {def_functie | def_procedura} [, MEMBER {def_functie | def_procedura}] ...] );
CREATE [OR REPLACE] TYPE nume {IS | AS} OBJECT [UNDER nume_parinte] ( nume_atribut tip_data [, nume_atribut tip_data] ... [CONSTRUCTOR function nume([lista_parametri]) return SELF AS RESULT,] [{MAP | ORDER} MEMBER def_functie,] [[{FINAL | OVERRIDING | NOT INSTANTIABLE}] MEMBER {def_functie | def_procedura} [, [{FINAL | OVERRIDING | NOT INSTANTIABLE}] MEMBER {def_functie | def_procedura}] ...] ) [{FINAL | NOT FINAL}][{INSTANTIABLE | NOT INSTANTIABLE}];
CREATE [OR REPLACE] TYPE BODY nume {IS | AS} implementare metode definite in partea de specificatii END;
DROP TYPE nume;
CREATE INDEX i_dept_addr1 ON department_loc (dept_addr.city);
CREATE TABLE movement ( idno NUMBER, old_office location_typ, new_office location_typ ); CREATE TRIGGER trigger1 BEFORE UPDATE OF office_loc ON office_tab FOR EACH ROW WHEN (new.office_loc.city = 'Redwood Shores') BEGIN IF :new.office_loc.building_no = 600 THEN INSERT INTO movement (idno, old_office, new_office) VALUES (:old.occupant.idno, :old.office_loc, :new.office_loc); END IF; END;/