Oracle user-defined types
With AWS DMS, you can migrate Oracle user-defined types (UDTs) to compatible AWS database services. Oracle UDTs are custom data types that extend the built-in scalar data types, allowing you to store complex data structures, such as objects and collections.
| Feature compatibility | AWS SCT / AWS DMS automation level | AWS SCT action code index | Key differences |
|---|---|---|---|
|
|
|
Aurora MySQL doesn’t support user-defined types. |
Oracle usage
Oracle refers to user-defined types (UDTs) as OBJECT TYPES. These types are managed using PL/SQL. User-defined types enable the creation of application-dedicated, complex data types that are based on, and extend, the built-in Oracle data types.
The CREATE TYPE statement supports creation of the following types:
-
Objects types
-
Varying array or
varraytypes -
Nested table types
-
Incomplete types
-
Additional types such as an SQLJ object type, which is a Java class mapped to SQL user-defined type
Examples
Create an Oracle Object Type to store an employee phone number.
CREATE OR REPLACE TYPE EMP_PHONE_NUM AS OBJECT (
PHONE_NUM VARCHAR2(11));
CREATE TABLE EMPLOYEES (
EMP_ID NUMBER PRIMARY KEY,
EMP_PHONE EMP_PHONE_NUM NOT NULL);
INSERT INTO EMPLOYEES VALUES(1, EMP_PHONE_NUM('111-222-333'));
SELECT a.EMP_ID, a.EMP_PHONE.PHONE_NUM FROM EMPLOYEES a;
EMP_ID EMP_PHONE.P
1 111-222-333
Create an Oracle object type as a collection of attributes for the employees table.
CREATE OR REPLACE TYPE EMP_ADDRESS AS OBJECT (
STATE VARCHAR2(2),
CITY VARCHAR2(20),
STREET VARCHAR2(20),
ZIP_CODE NUMBER);
CREATE TABLE EMPLOYEES (
EMP_ID NUMBER PRIMARY KEY,
EMP_NAME VARCHAR2(10) NOT NULL,
EMP_ADDRESS EMP_ADDRESS NOT NULL);
INSERT INTO EMPLOYEES VALUES(1, 'John Smith',
EMP_ADDRESS('AL', 'Gulf Shores', '3033 Joyce Street', '36542'));
SELECT a.EMP_ID, a.EMP_NAME, a.EMP_ADDRESS.STATE,
a.EMP_ADDRESS.CITY, a.EMP_ADDRESS.STREET, a.EMP_ADDRESS.ZIP_CODE
FROM EMPLOYEES a;
EMP_ID EMP_NAME STATE CITY STREET ZIP_CODE
1 John Smith AL Gulf Shores 3033 Joyce Street 36542
For more information, see CREATE TYPE
MySQL usage
Currently, Amazon Aurora MySQL doesn’t provide a directly comparable alternative for user-defined types.