Menu
AWS Schema Conversion Tool
User Guide (Version 1.0)

Oracle to MySQL Supported Schema Conversion

The following sections list the schema elements from an Oracle database and whether they are supported for automatic conversion to MySQL using the AWS Schema Conversion Tool.

Statements

SELECT

Clause Automatically Converted Details

WITH

No

Use a stored procedure to prepare data, or rewrite your query to avoid the WITH clause.

AS

No

SELECT

Yes

DISTINCT | UNIQUE | ALL

Yes

select_list

Yes

BULK COLLECT INTO

No

You can try to include all of the fields from your table in an INTO clause.

INTO

Yes

record_name

No

FROM

Yes

@dblink

No

materialized view

No

TABLE (collection_expression)

No

MODEL

No

MySQL doesn't support the MODEL statement.

START WITH

No

MySQL doesn't support hierarchical queries. Use a stored procedure to prepare data.

CONNECT BY

No

MySQL doesn't support hierarchical queries. Use a stored procedure to prepare data.

PIVOT

No

XML

No

UNPIVOT

No

WHERE

Yes

GROUP BY

Yes

CUBE

No

Use a stored procedure to prepare data.

GROUPING SETS

No

Use a stored procedure to prepare data.

HAVING

Yes

ORDER BY

Yes

SIBLINGS

No

NULLS FIRST | NULLS LAST

No

MySQL doesn't support NULLS FIRST and NULLS LAST. In MySQL NULL sorting, NULL values go first for an ascending order and last for a descending order. Try rewriting the ORDER BY clause with CASE.

FOR UPDATE

Yes

OF

No

Try using FOR UPDATE instead of FOR UPDATE OF.

NOWAIT | WAIT

No

MySQL doesn't support WAIT and NOWAIT clauses. Try using FOR UPDATE without NOWAIT.

SKIP LOCKED

No

Try using FOR UPDATE without SKIP LOCKED.

UNION

Yes

INTERSECT | MINUS]

Yes

INSERT

Clause Automatically Converted Details

INTO table

Yes

PARTITION

Yes

PARTITION FOR

No

SUBPARTITION

No

Either insert data into the overlying partition, or perform a manual conversion using the INSERT statement.

VIEW

No

Target a table with the INSERT statement instead of a VIEW. If the target view has an INSTEAD OF trigger, parse and execute the INSTEAD OF trigger code.

MATERIALIZED VIEW

No

Perform a manual conversion.

subquery

No

Perform this operation on the underlying tables instead.

WITH table_collection_expression

No

column …

Yes

VALUES

Yes

subquery

Yes

RETURNING … INTO

No

To perform this operation, divide the INSERT statement with the RETURNING clause into an INSERT statement with following SELECT statements and use the same key conditions in each SELECT. You can also use the last value that was generated by AUTO_INCREMENT column in the key condition.

LOG ERRORS

No

You can add error records by inserting them into the log in the exception block. Iterate through the errors in the exception block, add them to the log, and use the EXIT command when finished.

UPDATE

Clause Automatically Converted Details

UPDATE [hint]

Yes

table

Yes

PARTITION

Yes

PARTITION FOR

No

SUBPARTITION

No

Either insert data into the overlying partition, or perform a manual transformation using the UPDATE statement.

VIEW

No

Perform an update on the underlying tables instead.

MATERIALIZED VIEW

No

subquery

No

Perform this operation on the underlying tables instead.

WITH

No

table_collection_expression

Yes

SET

Yes

VALUE

WHERE condition

Yes

RETURNING ... INTO

No

To perform this operation, divide the UPDATE statement with the RETURNING clause into an UPDATE statement with following INSERT statements that have the specified key conditions in the SELECT part.

LOG ERRORS

No

You can add error records by inserting them into the log in the exception block. Iterate through the errors in the exception block, add them to the log, and use the EXIT command when finished.

Note

MySQL doesn't support FILESTREAM DATA. Perform a manual conversion to update the data in the file system file.

DELETE

Clause Automatically Converted Details

DELETE

Yes

FROM

Yes

PARTITION

Yes

PARTITION FOR

No

Either insert data into the overlying partition, or perform a manual transformation using the DELETE statement.

SUBPARTITION

No

VIEW

No

Perform a manual conversion.

MATERIALIZED VIEW

No

Perform a manual conversion.

subquery

No

Perform this operation on the underlying tables instead.

WITH

No

table_collection_expression

Yes

WHERE condition

Yes

RETURNING … INTO

No

To perform this operation, divide the DELETE statement with the RETURNING clause into a DELETE statement with following INSERT statements and use the same key conditions in each SELECT.

LOG ERRORS

No

You can add error records by inserting them into the log in the exception block. Iterate through the errors in the exception block, add them to the log, and use the EXIT command when finished.

MERGE

Statement Automatically Converted Details

MERGE

No

To achieve the effect of a MERGE statement, use separate INSERT, DELETE, and UPDATE statements.

TRUNCATE

Clause Automatically Converted Details

TRUNCATE TABLE

Yes

PRESERVE MATERIALIZED VIEW LOG

No

PURGE MATERIALIZED VIEW LOG

No

DROP STORAGE

No

REUSE STORAGE

No

LOCK TABLE

Clause Automatically Converted Details

PARTITION

No

SUBPARTITION

No

NOWAIT

No

Procedures

Item Automatically Converted Details

LOCK TABLE

No

MySQL doesn't support the LOCK TABLE statement inside a stored procedure.

dbms_output.put_line

No

Try using INSERT in the log table. To do this, you must add code into AWS_ORACLE_EXT.PUT_LINE.

dbms_output.put

No

Try using INSERT in the log table. To do this, you must add code into AWS_ORACLE_EXT.PUT.

Flow Control

Clause Automatically Converted Details

GOTO

No

FORALL

No

Try using a WHILE DO statement.

EXECUTE IMMEDIATE

No

BULK COLLECT

No

RETURNING BULK COLLECT INTO

No

LABEL

No

Try rewriting variables without using labels.

Packages

Item Automatically Converted Details

Initialization block, BEGIN … END

Partial

MySQL doesn't support EXCEPTION BLOCK in initialization blocks in packages. Try using CONTINUE HANDLER.

User type

No

Global cursor

No

Global user exception

No

Functions

In this section, you can find a list of the Microsoft SQL Server built-in functions that indicates whether the AWS Schema Conversion Tool performs an automatic conversion. Where MySQL doesn't support a function, consider creating a user-defined function.

Aggregate Functions

Function Automatically Converted Details

AVG

Yes

COLLECT

No

CORR

No

CORR_*

No

COUNT

Yes

COVAR_POP

No

COVAR_SAMP

No

CUME_DIST

No

DENSE_RANK

No

FIRST

No

GROUP_ID

No

GROUPING

No

GROUPING_ID

No

LAST

No

MAX

Yes

MEDIAN

No

MIN

Yes

PERCENTILE_CONT

No

PERCENTILE_DISC

No

PERCENT_RANK

No

RANK

No

REGR_ (Linear Regression) Functions

No

STATS_BINOMIAL_TEST

No

STATS_CROSSTAB

No

STATS_F_TEST

No

STATS_KS_TEST

No

STATS_MODE

No

STATS_MW_TEST

No

STATS_ONE_WAY_ANOVA

No

STATS_T_TEST_*

No

STATS_WSR_TEST

No

STDDEV

Yes

STDDEV_POP

Yes

STDDEV_SAMP

Yes

SUM

Yes

TRUNC

Yes

Converts to: TRUNCATE()

VAR_POP

Yes

VAR_SAMP

Yes

VARIANCE

Yes

Date and Time Functions

Function Automatically Converted Details

ADD_MONTHS(date, num)

Partial

Converts to: TIMESTAMPADD(MONTH, num, date)

CURRENT_DATE

Partial

Converts to: NOW()

CURRENT_TIMESTAMP

Partial

Converts to: NOW()

DBTIMEZONE

No

EXTRACT(YEAR FROM date)

Partial

Converts to: YEAR(date)

EXTRACT(MONTH FROM date)

Partial

Converts to: MONTH(date)

EXTRACT(DAY FROM date)

Partial

Converts to: DAY(date)

EXTRACT(HOUR FROM time)

Partial

Converts to: HOUR(time)

EXTRACT(MINUTE FROM time)

Partial

Converts to: MINUTE(time)

EXTRACT(SECOND FROM time)

Partial

Converts to: SECOND(time)

FROM_TZ

No

LAST_DAY(date)

Yes

LOCALTIMESTAMP

Yes

LOCALTIMESTAMP(prec)

Partial

The maximum precision for the MySQL LOCALTIMESTAMP function is 6. If you need greater precision, create a user-defined function.

MONTHS_BETWEEN(date1, date2)

No

NEW_TIME

No

NEXT_DAY

No

NUMTODSINTERVAL

No

NUMTOYMINTERVAL

No

ROUND (date)

No

SESSIONTIMEZONE

No

SYS_EXTRACT_UTC

No

SYSDATE

Partial

Converts to: SYSDATE()

SYSTIMESTAMP

Partial

Converts to: CURRENT_TIMESTAMP

TO_CHAR (datetime, format)

Partial

Converts to: DATE_FORMAT()

Note that the TO_CHAR and DATE_FORMAT format strings are different.

TO_TIMESTAMP(exp)

No

TO_TIMESTAMP_TZ

No

TO_DSINTERVAL

No

TO_YMINTERVAL

No

TRUNC (datetime)

Partial

Converts to: DATE(datetime)

TZ_OFFSET

No

Mathematical Functions

Function Automatically Converted Details

ABS(num)

Yes

ACOS(num)

Yes

ASIN(num)

Yes

ATAN(num)

Yes

ATAN2(x,y)

Yes

BITAND(exp1, exp2)

Partial

Converts to: (exp1 & exp2)

CEIL(num)

Yes

COS(num)

Yes

COSH(num)

Partial

Converts to: (EXP(num) + EXP(-num)) / 2

EXP(n)

Yes

FLOOR(num)

Yes

LN(num)

Yes

LOG(num1, num2)

Yes

MOD(dividend, divisor)

Yes

NANVL(n2, n1)

No

POWER(value, n)

Yes

REMAINDER(n1, n2)

Partial

Converts to: (n1 - n2*ROUND(n1/n2))

ROUND (num, integer)

Yes

SIGN(exp)

Yes

SIN(num)

Yes

SINH(num)

Yes

SQRT(num)

Yes

TAN(num)

Yes

TANH(num)

Yes

TRUNC (number)

Partial

Converts to: TRUNCATE(num, 0)

TRUNC(num, num2)

Yes

VALUE(variable)

No

WIDTH_BUCKET

No

Character (String) Functions

Function Automatically Converted Details

ASCII(str)

Yes

CHR(num)

Partial

Converts to: CHAR(num USING ASCII)

CONCAT(char1, char2)

Yes

INITCAP(string)

No

INSTR(str, substr)

Yes

INSTR(str, substr, pos)

Partial

Converts to: LOCATE (substr, str, pos)

This function is the same as the two-argument form of INSTR(), except that the order of the arguments is reversed.

INSTR(str, substr, pos, num)

No

LENGTH(string)

Partial

Converts to: LENGTH (string)

LOWER(string)

Yes

LPAD(string, len)

Partial

Converts to: LPAD(string, len, ' ')

LPAD(string, len, pad)

Yes

LTRIM(string)

Yes

LTRIM(string, set)

Partial

Converts to: TRIM(LEADING set FROM string)

NLS_INITCAP

No

NLS_LOWER

No

NLS_UPPER

No

NLSSORT

No

REGEXP_INSTR

No

REGEXP_REPLACE

No

REGEXP_SUBSTR

No

REPLACE(str, search)

Partial

Converts to: REPLACE(str, search, '')

REPLACE(str, search, replace)

Yes

RPAD(string, len)

Partial

Converts to: RPAD(string, len, ' ')

RPAD(string, len, pad)

Yes

RTRIM(string)

Yes

RTRIM(string, set)

Partial

Converts to: TRIM(TRAILING set FROM string)

SOUNDEX(string)

Yes

SUBSTR(string, pos, len)

Yes

TRANSLATE(string, from, to)

No

TREAT

TRIM([type trim FROM] string)

Yes

UPPER(string)

Yes

Conversion Functions

Function Automatically Converted Details

ASCIISTR(string)

No

BIN_TO_NUM(bit1, bit2, …)

No

CAST

Yes

CHARTOROWID

No

COMPOSE

No

CONVERT(string, charset)

Partial

Converts to: CONVERT(string USING charset)

DECOMPOSE

No

HEXTORAW

No

NUMTODSINTERVAL

No

NUMTOYMINTERVAL

No

RAWTOHEX

No

RAWTONHEX

No

ROWIDTOCHAR

No

ROWIDTONCHAR

No

SCN_TO_TIMESTAMP

No

TIMESTAMP_TO_SCN

No

TO_BINARY_DOUBLE

No

TO_BINARY_FLOAT

No

TO_CHAR (character)

No

TO_CHAR (datetime, format)

Partial

Converts to: DATE_FORMAT(datetime, format)

Note that the TO_CHAR and DATE_FORMAT format strings are different.

TO_CHAR (number, format)

Partial

Converts to: FORMAT(number, decimal_digits)

In MySQL, you can use FORMAT function as well as other string functions and expressions.

TO_CLOB

Partial

TO_DATE

Partial

Converts to: STR_TO_DATE(string, format)

Note that the TO_DATE and STR_TO_DATE format strings are different.

TO_DSINTERVAL

No

TO_LOB

No

TO_MULTI_BYTE

No

TO_NCHAR (character)

No

TO_NCHAR (datetime)

No

TO_NCHAR (number)

No

TO_NCLOB

No

TO_NUMBER

No

TO_DSINTERVAL

No

TO_SINGLE_BYTE

No

TO_TIMESTAMP

No

TO_TIMESTAMP_TZ

No

TO_YMINTERVAL

No

TRANSLATE ... USING

No

UNISTR

Partial

Converts to: CHAR(string USING UCS2)

General Comparison Functions

Function Automatically Converted Details

GREATEST(exp, exp2, …)

Yes

LEAST(exp, exp2, …)

Yes

Encoding and Decoding Functions

Function Automatically Converted Details

DECODE(exp, when, then, ...)

Partial

Converts to: CASE expression

DUMP

No

ORA_HASH

No

VSIZE

No

Email

MySQL doesn’t support sending e-mail. To send email, use Amazon Simple Email Service (Amazon SES).

HTTP

MySQL doesn't support sending messages to HTTP endpoints. To send messages to HTTP and HTTPS endpoints, you can use the Amazon Simple Notification Service (Amazon SNS).

SMS

MySQL doesn't support sending notifications by using SMS. To send and receive SMS notifications, you can use the Amazon Simple Notification Service (Amazon SNS).

NULL Functions

Function Automatically Converted Details

COALESCE(exp1, exp2, …)

Yes

LNNVL

No

NULLIF(exp1, exp2)

Partial

Converts to: NULLIF(exp1, exp2)

NVL(exp, replacement)

Partial

Converts to: IFNULL(exp, replacement)

NVL2(exp1, exp2, exp3)

Partial

Converts to: CASE expression

User-Defined Functions

Return

In MySQL, you can use statements that return a result set within a stored procedure but not within a stored function.

Statement Automatically Converted Details

RETURN resultset

No

Try changing the function to a stored procedure and use a table to store the results.

RETURN record-type

No

Try changing the function to a stored procedure and change record-type items to separate parameters.

TYPE .. IS TABLE OF .. INDEX BY

No

Try changing the function to a stored procedure and use a table to store the results.

TYPE .. IS TABLE OF

No

Try changing the function to a stored procedure and use a table to store the results.

TYPE .. IS VARRAY(..) OF

No

Try changing the function to a stored procedure and use a table to store the results.

RETURN .. PIPELINED

No

Try changing the function to a stored procedure and use a table to store the results.

TYPE ... IS REF CURSOR

No

Try changing the function to a stored procedure and use a table to store the results.

object-type

No

Collections

Item Automatically Converted Details

TYPE .. IS TABLE OF…

No

MySQL doesn't support table type variables. Try using a table.

collection_name.First, collection_name.Last, collection_name.Count, collection_name.Next

No

MySQL doesn't support table type collection methods. Try using a table.

:= collection_type(...)

No

MySQL doesn't support the constructor for the collection type. Try using a table.

Arguments

Item Automatically Converted Details

UDT record-type

No

UDT collection-type

No

UDT object-type

No

Large Object Functions

Function Automatically Converted Details

BFILENAME

No

EMPTY_BLOB

Partial

Converts to an empty string.

EMPTY_CLOB

Partial

Converts to an empty string.

Hierarchical Functions

Function Automatically Converted Details

SYS_CONNECT_BY_PATH

No

Try creating a user-defined function.

Analytic Functions

MySQL doesn't support analytic functions. Try creating a user-defined function.

Operators

Arithmetic Operators

Clause Automatically Converted Details

+

Yes

-

Yes

+ -

Partial

MySQL handles date and time arithmetic differently. Verify that the converted schema is accurate.

* /

Yes

Assignment Operator

Clause Automatically Converted Details

=

Yes

Comparison Operators

Clause Automatically Converted Details

>

Yes

<

Yes

>=

Yes

<=

Yes

<>

Yes

!=

Yes

!<

Yes

!>

Yes

Logical Operators

Clause Automatically Converted Details

IN

Yes

NOT IN

Yes

ANY

Yes

SOME

Yes

ALL

Yes

BETWEEN x

Yes

EXISTS

Yes

LIKE

Yes

IS NULL

Yes

NOT

Yes

AND

Yes

OR

Yes

String Concatenation Operator

Clause Automatically Converted Details

||

Yes

Date and time format specifiers

Clause Automatically Converted Default Conversion

YEAR

No

YYYY

Partial

%Y

YYY

No

YY

Partial

%y

Y

No

IYY

No

IY

Partial

%y

I

No

IYYY

Partial

%Y

RRRR

No

Q

No

MM

Partial

%m

MON

Partial

%b

MONTH

Partial

%M

RM

No

WW

Partial

%V

W

No

IW

Partial

%V

D

Partial

%w

Day of the week (1=Sunday, 7=Saturday)

Partial

Day of the week (0=Sunday, 6=Saturday)

DAY

Partial

%W

DD

Partial

%e

DDD

Partial

%j

DY

Partial

%a

J

No

HH

Partial

%h

HH12

Partial

%h

HH24

Partial

%H

MI

Partial

%i

SS

Partial

%S

SSSSS

No

FF

No

AM, PM

Partial

%p

A.M., P.M.

No

AD or A.D

No

BC or B.C.

No

TZD

No

TZH

No

TZM

No

TZR

No

Data Types

Data type Automatically Converted Default Conversion Details

BFILE

Partial

VARCHAR(255)

Contains the file path to the BFILE. MySQL does not support the BFILE. Because BFILE data is made up of the path to a file, you can either store a filename and create a routine that gets the file from the file system, or store the file contents as a LONGBLOB.

BINARY_FLOAT

Yes

FLOAT

BINARY_DOUBLE

Yes

DOUBLE

BLOB

Yes

LONGBLOB

CHAR

Yes

TEXT

CHAR(n), CHARACTER(n)

Yes

CHAR(n), CHARACTER(n)

CHAR(n), CHARACTER(n)

Yes

VARCHAR(n)

CLOB

Yes

LONGTEXT

DATE

Yes

DATETIME

DECIMAL, DEC

Yes

DOUBLE

DECIMAL(p,s), DEC(p,s)

Yes

DECIMAL(p,s), DEC(p,s)

DOUBLE PRECISION

Yes

DOUBLE PRECISION

FLOAT

Yes

DOUBLE

FLOAT(p)

Yes

DOUBLE

INTEGER, INT

Yes

DECIMAL(38)

INTERVAL YEAR TO MONTH

Yes

DOUBLE

INTERVAL YEAR(p) TO MONTH

Yes

VARCHAR(30)

INTERVAL DAY TO SECOND

Yes

VARCHAR(30)

INTERVAL DAY(p) TO SECOND(s)

Yes

VARCHAR(30)

LONG

Yes

LONGTEXT

LONG RAW

Yes

LONGBLOB

NCHAR

Yes

TEXT

NCHAR(n)

Yes

NCHAR(n)

NCHAR(n)

Yes

NVARCHAR(n)

NCHAR VARYING

Yes

TEXT

NCHAR VARYING(n)

Yes

NCHAR VARYING(n)

NCLOB

Yes

LONGTEXT

NUMBER(p,0), NUMBER(p)

Yes

DECIMAL(p,0), DECIMAL(p)

NUMBER(p,s)

Yes

DECIMAL(p,s)

NUMBER, NUMBER(*),NUMERIC

Yes

DOUBLE

NUMERIC(p,s)

Yes

NUMERIC(p,s)

NVARCHAR2

Yes

TEXT

NVARCHAR2(n)

Yes

NVARCHAR(n)

RAW

Yes

VARBINARY(2000)

RAW(n)

Yes

BINARY(n)

RAW(n)

Yes

VARBINARY(n)

REAL

Yes

DOUBLE

ROWID

Yes

CHAR(10)

SMALLINT

Yes

DECIMAL(38)

TIMESTAMP

Yes

DATETIME

TIMESTAMP(p)

Yes

DATETIME(p)

TIMESTAMP(p)

Partial

MySQL expands fractional seconds support for TIME, DATETIME, and TIMESTAMP values, with up to microseconds (6 digits) precision.

TIMESTAMP(p) WITH TIME ZONE

Partial

DATETIME

There is not a data type in MySQL that can store time zone information. DATETIME data type stores timestamps in the MySQL server time zone.

UROWID

Yes

TEXT

UROWID(n)

Yes

VARCHAR(n)

VARCHAR

Yes

TEXT

VARCHAR(n)

Yes

VARCHAR(n)

VARCHAR2

Yes

TEXT

VARCHAR2(n)

Yes

VARCHAR(n)

XMLTYPE

Yes

LONGTEXT

Data Definition Language (DDL)

CREATE TABLE

CREATE TABLE statements are converted automatically except for the following.

Clause Automatically converted Details

OBJECT TABLE

No

MySQL doesn't support OBJECT TABLE. Revise your code to avoid OBJECT TABLE.

CLUSTERED TABLE

No

MySQL doesn't support CLUSTERED TABLE. Try using a table with triggers.

EXTERNAL TABLE

No

MySQL doesn't support EXTERNAL TABLE. Try using a table.

GLOBAL TEMPORARY TABLE

No

MySQL doesn't support GLOBAL TEMPORARY TABLE. Try using a temporary table.

Partitioned tables

No

MySQL doesn't support all partition types. Perform a manual conversion for the partition types that aren't supported.

Virtual columns

No

MySQL doesn't support virtual columns. Represent virtual columns using a view.

Functions as default values

No

MySQL doesn't support functions as default values. Try using a trigger.

NESTED TABLE columns

No

MySQL doesn't support tables with NESTED TABLE columns. Revise any tables with NESTED TABLE columns to avoid these columns.

COLUMN(TABLE)

No

MySQL doesn't support the objects column. Create a user-defined function.

CREATE INDEX

CREATE INDEX statements are converted automatically except that MySQL does not support bitmap, function-based, or domain indexes.

CREATE TRIGGER

CREATE TRIGGER statements are converted automatically except for the following.

Clause Automatically converted Details

COMPOUND

No

MySQL doesn't support compound triggers. Create a single trigger for each part of the compound trigger.

INSTEAD OF

No

MySQL doesn't support INSTEAD OF. Try using a BEFORE trigger.

INSERTING | UPDATING | DELETING

No

MySQL doesn’t support conditional predicates.

without FOR EACH ROW

No

MySQL doesn't support statement triggers. Try including FOR EACH ROW.

FOLLOWS | PRECEDES

No

MySQL doesn't support the FOLLOWS | PRECEDES clause. Try using a FOR EACH ROW trigger.

UPDATE OF

No

MySQL doesn't support the UPDATE OF clause. Try using a FOR EACH ROW trigger.

REFERENCING NEW AS | OLD AS

No

MySQL doesn't support the REFERENCING clauses. Modify references to pseudorows to use OLD and NEW instead.

WHEN(condition)

No

MySQL doesn't support WHEN(condition) triggers. Apply the condition for WHEN in the trigger body.

ON NESTED TABLE

No

trigger-status=DISABLED

No

MySQL doesn't support the DISABLED clause. Drop the trigger instead.

create-date

No

MySQL doesn't support create-date for triggers. Try using a FOR EACH ROW trigger.

modify-date

No

MySQL doesn't support modify-date for triggers. Try using a FOR EACH ROW trigger.

status

No

MySQL doesn't support trigger status values. Try using a FOR EACH ROW trigger.

description

No

MySQL doesn't support descriptions for triggers.

In MySQL, you can get a trigger description using INFORMATION_SCHEMA.TRIGGERS. MySQL doesn't support the REFERENCING clause. The following are the corresponding values between Oracle(USER_TRIGGERS) and MySQL(INFORMATION_SCHEMA.TRIGGERS):

  • TABLE_OWNER corresponds to TRIGGER_SCHEMA

  • TRIGGER_NAME corresponds to TRIGGER_NAME

  • TRIGGER_TYPE corresponds to ACTION_TIMING

  • TRIGGERING_EVENT corresponds to EVENT_MANIPULATION

  • TABLE_NAME corresponds to EVENT_OBJECT_TABLE

  • REFERENCING_NAMES corresponds to ACTION_REFERENCE_NEW_ROW(always is NEW), ACTION_REFERENCE_OLD_ROW(always is OLD)

triggering-event=ddl_events

No

triggering-event=database_events

No

base-object-type=VIEW

No

base-object-type=SCHEMA

No

base-object-type=DATABASE

No

action-type=CALL or PL/SQL

No

crossedition=FORWARD/REVERSE

No

fire-once=YES

No

apply-server-only=YES

No

referencing-names=PARENT

No

CREATE VIEW

CREATE VIEW statements are converted automatically except for the following.

Clause Automatically converted Details

FORCE

No

NOFORCE

No

NOFORCE is the default behavior for MySQL. You don't need to specify this option.

WITH READ ONLY

No

create-date

No

modify-date

No

status

No

oid-text

No

view-type-owner

No

view-type

No

superview-name

No

editioning-view

No

encrypted-view

No

CAST

No

MySQL doesn’t support views with nested table columns.

CREATE CONSTRAINT

CREATE CONSTRAINT statements are converted automatically except for the following.

Clause Automatically converted Details

DISABLE, status=DISABLED

No

My SQL doesn't support constraints with the status DISABLE. Drop the constraint.

Foreign keys of different types

No

MySQL doesn't support foreign keys with different types of columns and referenced columns. Modify the column types using an equivalent of the column data types in the original database.

constraint-type

No

MySQL doesn't support the constraint check option on a view. Try using a trigger.

CREATE SEQUENCE

MySQL doesn't support sequences. Try developing a system for sequences in your application.

Cursors

Cursors are converted automatically except for the following.

Clause Automatically converted Details

SQLAttribute

Partial

MySQL doesn't support the cursor attribute SQL%ISOPEN

MySQL doesn't support the cursor attribute SQL%BULK_ROWCOUNT. To calculate processed rows, use a variable.

REF CURSOR

No

MySQL doesn't support the REF CURSOR object. Perform a manual conversion.

SYS_REFCURSOR

No

MySQL doesn't support a variable of SYS_REFCURSOR type. Perform a manual conversion.

CURSOR

Partial

The AWS Schema Conversion Tool cannot automatically transform the SELECT statement for an implicit cursor. Try rewriting the SELECT statement.

REF_CURSOR variable

Partial

The SELECT statement for the REF_CURSOR variable cannot be transformed. Try rewriting the SELECT statement.

Hints

MySQL doesn't support hints. Try using MySQL performance tuning methods or perform a manual conversion.

Clause Automatically converted Details

/*+ ALL_ROWS */

No

/*+ AND_EQUAL(table index...) */

No

/*+ APPEND */

No

/*+ CACHE(table) */

No

/*+ CHOOSE */

No

/*+ CLUSTER(table) */

No

/*+ CURSOR_SHARING_EXACT */

No

/*+ DRIVING_SITE(table) */

No

/*+ DYNAMIC_SAMPLING */

No

/*+ EXPAND_GSET_TO_UNION */

No

/*+ FACT(table) */

No

/*+ FIRST_ROWS(n) */

No

/*+ FULL(table) */

No

/*+ HASH */

No

/*+ HASH_SJ */

No

/*+ INDEX(table index) */

No

/*+ INDEX_ASC(table index) */

No

/*+ INDEX_COMBINE(table index) */

No

/*+ INDEX_DESC(table index) */

No

/*+ INDEX_FFS(table index) */

No

/*+ LEADING(table) */

No

/*+ MERGE(table) */

No

/*+ MERGE_SJ */

No

/*+ NL_SJ */

No

/*+ NO_EXPAND */

No

/*+ NO_INDEX(table index) */

No

/*+ NO_MERGE(table) */

No

/*+ NO_PARALLEL(table) */

No

/*+ NO_PARALLEL_INDEX(table index) */

No

/*+ NO_PUSH_PRED(subquery) */

No

/*+ NO_PUSH_SUBQ(subquery) */

No

/*+ NO_REWRITE */

No

/*+ NO_UNNEST */

No

/*+ NOAPPEND */

No

/*+ NOCACHE(table) */

No

/*+ NOFACT(table) */

No

/*+ ORDERED */

No

/*+ ORDERED_PREDICATES */

No

/*+ PARALLEL(table server_num) */

No

/*+ PARALLEL_INDEX(table index server_num) */

No

/*+ PQ_DISTRIBUTE(table out_distr in_distr) */

No

/*+ PUSH_PRED(subquery) */

No

/*+ PUSH_SUBQ(subquery) */

No

/*+ REWRITE */

No

/*+ ROWID(table) */

No

/*+ RULE */

No

/*+ STAR */

No

/*+ STAR_TRANSFORMATION */

No

/*+ UNNEST */

No

/*+ USE_CONCAT */

No

/*+ USE_HASH(table1 table2) */

No

/*+ USE_MERGE(table1 table2) */

No

Exceptions

Item Automatically converted Details

RAISE

No

MySQL doesn't support the RAISE command. Review the exception, and if possible convert it to an exception using the SIGNAL or RESIGNAL statement.

%s

No

MySQL doesn't support the %s exception. Review the exception, and if possible convert it to an exception using the SIGNAL or RESIGNAL statement.

EXCEPTION

No

MySQL doesn't support the EXCEPTION declaration. Use the DECLARE ... CONDITION statement.

PRAGMA EXCEPTION_INIT

No

MySQL doesn't support the PRAGMA EXCEPTION_INIT declaration. Use the DECLARE ... CONDITION statement.

PROC_RAISE_APPLICATION_ERROR

No

MySQL doesn't support the PROC_RAISE_APPLICATION_ERROR statement. Use the DECLARE ... CONDITION statement. Try using the SIGNAL or RESIGNAL statement.

Built-In Exceptions

Exception Automatically converted Details

INVALID_NUMBER

No

Try creating a user exception.

TIMEOUT_ON_RESOURCE

No

Try creating a user exception.

TRANSACTION_BACKED_OUT

No

Try creating a user exception.

INVALID_CURSOR

No

You can use one of several handlers for invalid cursors. Choose the correct handler based on the issue.

NOT_LOGGED_ON

No

Try creating a user exception.

LOGIN_DENIED

No

Try creating a user exception.

STORAGE_ERROR

No

You can use one of several handlers for invalid cursors. Choose the correct handler based on the issue.

PROGRAM_ERROR

No

Try using the handler "1815 - Internal Error."

Related Topics