<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="https://www.sqlines.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.sqlines.com/feed.php">
        <title>SQLines Tools oracle-to-mariadb</title>
        <description></description>
        <link>https://www.sqlines.com/</link>
        <image rdf:resource="https://www.sqlines.com/lib/images/favicon.ico" />
       <dc:date>2026-04-21T14:17:29+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/abs?rev=1604999512&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/add_months?rev=1621416617&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/alter_table_add_fk?rev=1739883623&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/alter_table_add_unique_using_index?rev=1739875599&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/alter_table_modify?rev=1741163219&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/alter_user?rev=1738662062&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/call_proc?rev=1749122260&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/computed_column?rev=1740731754&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/connect_by_prior?rev=1749151899&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/create_global_temp_table?rev=1738427009&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/create_synonym?rev=1744705444&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/create_user?rev=1738609256&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/cross_join?rev=1750834603&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/current_date?rev=1768079003&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/current_timestamp?rev=1768136354&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/datetime_arithmetic?rev=1748530794&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/dbms_session?rev=1770304147&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/dbms_sql?rev=1749545579&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/default_on_null?rev=1747062767&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/dense_rank?rev=1766479485&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/empty_blob?rev=1749224745&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/empty_clob?rev=1749239826&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/extract?rev=1766565223&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/goto?rev=1748962936&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/grant?rev=1738694404&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/identity?rev=1666301266&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/initcap?rev=1639056566&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/instr?rev=1769798027&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/is_json?rev=1750011283&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/last_day?rev=1621955426&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/length?rev=1630950381&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/listagg?rev=1766413942&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/lpad?rev=1631016613&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/months_between?rev=1631567715&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/next_day?rev=1765786046&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/number?rev=1727462770&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/nvarchar2?rev=1738573816&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/nvl?rev=1766394695&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/nvl2?rev=1766392424&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/offset_fetch_first?rev=1728996117&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/order_by_nulls?rev=1728650181&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/partition_by_list?rev=1747316111&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/partition_by_range?rev=1740551570&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/pipelined_function?rev=1742973076&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/power?rev=1631030122&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/raise_application_error?rev=1731497450&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/rank?rev=1766479863&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/regexp_substr?rev=1768380363&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/replace?rev=1621843066&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/round?rev=1748538132&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/rpad?rev=1631022749&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/sequence_order?rev=1514126624&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/soundex?rev=1770019175&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/statement-level-triggers?rev=1765952218&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/subquery_alias?rev=1721046226&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/substr?rev=1742886386&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/sys_context?rev=1770305304&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/sys_guid?rev=1740581077&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/sysdate?rev=1768138310&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/systimestamp?rev=1768139044&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/timestamp?rev=1740046768&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/to_char_datetime?rev=1767723389&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/to_char_number?rev=1747231001&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/to_date?rev=1766589447&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/to_timestamp?rev=1770023588&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/translate?rev=1631103509&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/trunc_datetime?rev=1765808589&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/user?rev=1747834523&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/userenv?rev=1770032116&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.sqlines.com/oracle-to-mariadb/varchar2?rev=1725178943&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.sqlines.com/lib/images/favicon.ico">
        <title>SQLines Tools</title>
        <link>https://www.sqlines.com/</link>
        <url>https://www.sqlines.com/lib/images/favicon.ico</url>
    </image>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/abs?rev=1604999512&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-11-10T09:11:52+00:00</dc:date>
        <title>ABS Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/abs?rev=1604999512&amp;do=diff</link>
        <description>ABS returns the absolute value of n.

Oracle:


SELECT ABS(-15) &quot;Absolute&quot;
  FROM DUAL;


Result:

 Absolute  15</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/add_months?rev=1621416617&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-19T09:30:17+00:00</dc:date>
        <title>ADD_MONTHS Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/add_months?rev=1621416617&amp;do=diff</link>
        <description>In Oracle, ADD_MONTHS function adds the number of month to the specified date value. In MariaDB, you have to use TIMESTAMPADD function with the MONTH datetime unit.

Oracle:


  ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
  
  -- Add 2 months to the current date
  SELECT ADD_MONTHS(SYSDATE, 2) FROM dual;
  # 2021-07-19 12:14:17</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/alter_table_add_fk?rev=1739883623&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T13:00:23+00:00</dc:date>
        <title>ADD FOREIGN KEY - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/alter_table_add_fk?rev=1739883623&amp;do=diff</link>
        <description>In Oracle, primary and foreign key columns can have different (compatible) data types with different precision and lengths. 

MariaDB requires primary and foreign key columns to have exactly the same data types. 


Oracle:


  -- Parent table
  CREATE TABLE parent1 (c1 NUMBER PRIMARY KEY);

  -- Child tables
  CREATE TABLE child1 (c1 NUMBER(*,0));
  CREATE TABLE child2 (c1 NUMBER(5,0));
 
  ALTER TABLE child1 ADD FOREIGN KEY (c1) REFERENCES parent1 (c1); 
  /* Table altered. */
  
  ALTER TABLE …</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/alter_table_add_unique_using_index?rev=1739875599&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T10:46:39+00:00</dc:date>
        <title>ADD UNIQUE USING INDEX - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/alter_table_add_unique_using_index?rev=1739875599&amp;do=diff</link>
        <description>In Oracle, you can add a unique constraint to a table using an existing unique index on the same columns. 

In MariaDB, you cannot specify an existing index when adding a unique constraint, and if a unique index already exists, and you add a unique constraint, MariaDB will create a duplicate unique index.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/alter_table_modify?rev=1741163219&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-05T08:26:59+00:00</dc:date>
        <title>ALTER TABLE MODIFY Column - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/alter_table_modify?rev=1741163219&amp;do=diff</link>
        <description>In Oracle, you can use the ALTER TABLE statement with the MODIFY clause to modify the definition of one or more columns. 

In MariaDB, you can also use the MODIFY clause of ALTER TABLE, but the syntax is slightly different. 


Oracle:


  CREATE TABLE t1 (c1 VARCHAR2(10), c2 NUMBER(5));
  /* Table created. */
  
  -- Modify single column
  ALTER TABLE t1 MODIFY (c1 VARCHAR2(30) NOT NULL);
  /* Table altered. */

  -- Modify multiple columns
  ALTER TABLE t1 MODIFY (c1 VARCHAR2(30) NULL, c2 NUMBE…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/alter_user?rev=1738662062&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-04T09:41:02+00:00</dc:date>
        <title>ALTER USER Statement - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/alter_user?rev=1738662062&amp;do=diff</link>
        <description>In Oracle and MariaDB, the ALTER USER statement modifies an existing user, but some clauses can differ and require conversion. 

DEFAULT ROLE ALL


Oracle allows you to enable all roles granted to a user at logon.

Oracle:


  ALTER USER &quot;USER1&quot; DEFAULT ROLE ALL;
  /* User altered. */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/call_proc?rev=1749122260&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-05T11:17:40+00:00</dc:date>
        <title>Execute Stored Procedures - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/call_proc?rev=1749122260&amp;do=diff</link>
        <description>In Oracle, you can execute a stored procedure from another stored procedure just specifying its name and parameters. In MariaDB, you have to use the CALL statement.

MariaDB does not support named parameters. 

Oracle:


  -- Sample procedure with parameters 
  CREATE OR REPLACE PROCEDURE sp1(param1 VARCHAR2, param2 VARCHAR2)
  IS
     var1 VARCHAR2(60);
  BEGIN
    var1 := param1 || ', ' || param2 || '!';
  END;
  /
  
  -- Sample procedure without parameters 
  CREATE OR REPLACE PROCEDURE sp2
…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/computed_column?rev=1740731754&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-28T08:35:54+00:00</dc:date>
        <title>Computed Column - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/computed_column?rev=1740731754&amp;do=diff</link>
        <description>In Oracle and MariaDB, you can define a computed (virtual) column that derives its values automatically by computing the specified expression.

Note that MariaDB requires the data type of a computed column to be explicitly specified while it is optional in Oracle.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/connect_by_prior?rev=1749151899&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-05T19:31:39+00:00</dc:date>
        <title>CONNECT BY PRIOR - Hierarchical Queries - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/connect_by_prior?rev=1749151899&amp;do=diff</link>
        <description>In Oracle, you can use CONNECT BY PRIOR clause of the SELECT statement to build hierarchical queries. MariaDB allows you to use Recursive Commom Table Expressions (CTE) to get the same functionality.

Rows Generator


One of the simplest use of CONNECT BY is to generate an arbitrary number of rows. For example, the following query generates 5 rows:</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/create_global_temp_table?rev=1738427009&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-01T16:23:29+00:00</dc:date>
        <title>CREATE GLOBAL TEMPORARY TABLE - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/create_global_temp_table?rev=1738427009&amp;do=diff</link>
        <description>In Oracle, you can create a global temporary table (GTT) whose definition is visible to all sessions but data is only visible within the session that inserted it. 

In MariaDB, you have to create a temporary table in each session, as temporary table definitions are not global, they are session-specific and not shared across sessions.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/create_synonym?rev=1744705444&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T08:24:04+00:00</dc:date>
        <title>CREATE SYNONYM Statement - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/create_synonym?rev=1744705444&amp;do=diff</link>
        <description>In Oracle, the CREATE SYNONYM statement defines an alternative name for a table, view, stored procedure, user-defined function, or other database object. 

MariaDB currently does not support synonyms (see MDEV-16482), but you can use a view when you need an alternative name for a table or another view.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/create_user?rev=1738609256&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-03T19:00:56+00:00</dc:date>
        <title>CREATE USER Statement - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/create_user?rev=1738609256&amp;do=diff</link>
        <description>In Oracle and MySQL, the CREATE USER statement creates a new user, but some clauses differ and require conversion. 

Oracle:


  -- Create a sample user
  CREATE USER &quot;USER1&quot; IDENTIFIED BY VALUES 'S:E4406C13C44...;H:6AE38B92223...;T:B99DEE30A...'
      DEFAULT TABLESPACE &quot;TBS_DATA&quot;
      TEMPORARY TABLESPACE &quot;TEMP&quot;
      PROFILE &quot;USER_PROFILE&quot;
      PASSWORD EXPIRE;</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/cross_join?rev=1750834603&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-25T06:56:43+00:00</dc:date>
        <title>CROSS JOIN - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/cross_join?rev=1750834603&amp;do=diff</link>
        <description>In Oracle and MariaDB, the CROSS JOIN clause allows you to perform a cartesian product (cross-product) i.e. join each row from the first table with each row from the second table. 

Consider sample data:


  -- Sample tables
  CREATE TABLE colors (name VARCHAR(30));
  CREATE TABLE products (name VARCHAR(30));

  -- Sample rows
  INSERT INTO colors VALUES ('Green');
  INSERT INTO colors VALUES ('Red');
  INSERT INTO colors VALUES ('Yellow');

  INSERT INTO products VALUES ('Apple');
  INSERT INTO…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/current_date?rev=1768079003&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-10T21:03:23+00:00</dc:date>
        <title>CURRENT_DATE Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/current_date?rev=1768079003&amp;do=diff</link>
        <description>In Oracle, the CURRENT_DATE function returns the current date and time in the session time zone at the statement execution time. 

In MariaDB, you can use the NOW() function, which also includes the time and returns the value in the session time zone at the statement execution time.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/current_timestamp?rev=1768136354&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-11T12:59:14+00:00</dc:date>
        <title>CURRENT_TIMESTAMP Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/current_timestamp?rev=1768136354&amp;do=diff</link>
        <description>In Oracle, the CURRENT_TIMESTAMP function returns the current date and time with fractional seconds and with the time zone (TIMESTAMP WITH TIME ZONE data type) in the session time zone.

In MariaDB, you can also use the CURRENT_TIMESTAMP function, which returns the value in the session time zone but does not include the time zone.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/datetime_arithmetic?rev=1748530794&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-29T14:59:54+00:00</dc:date>
        <title>Datetime Arithmetic - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/datetime_arithmetic?rev=1748530794&amp;do=diff</link>
        <description>In Oracle, you can use the + and - operators with DATE (includes time) and TIMESTAMP values i.e. you can add or subtract the specified number of days and fractions (hours, minutes etc.) of the day. 

In MariaDB, you have to use INTERVAL expressions and functions.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/dbms_session?rev=1770304147&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-05T15:09:07+00:00</dc:date>
        <title>DBMS_SESSION Package - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/dbms_session?rev=1770304147&amp;do=diff</link>
        <description>In Oracle, the DBMS_SESSION package can be used to set session-level information that can later be retrieved using the SYS_CONTEXT function.

In MariaDB, session-level information for applications can be stored and accessed using session variables.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/dbms_sql?rev=1749545579&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-10T08:52:59+00:00</dc:date>
        <title>DBMS_SQL Package - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/dbms_sql?rev=1749545579&amp;do=diff</link>
        <description>In Oracle, the DBMS_SQL built-in package allows you to execute dynamic SQL statements.

In MariaDB, you can use the PREPARE and EXECUTE statements. 

Oracle:


  -- Sample table
  CREATE TABLE colors (name VARCHAR(30), category CHAR(1));

  -- Sample procedure
  CREATE OR REPLACE PROCEDURE sp1(name VARCHAR2, category CHAR)
  AS
    cur INTEGER;
    processed INTEGER;
  BEGIN
    cur := DBMS_SQL.OPEN_CURSOR;
  
    DBMS_SQL.PARSE(cur, 'INSERT INTO colors VALUES (:name, :category)', DBMS_SQL.NATIV…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/default_on_null?rev=1747062767&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-12T15:12:47+00:00</dc:date>
        <title>DEFAULT ON NULL - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/default_on_null?rev=1747062767&amp;do=diff</link>
        <description>In Oracle, you can use the DEFAULT ON NULL clause to apply the column's default value when a NULL is explicitly inserted into the table.

MariaDB does not support the ON NULL clause, so you must avoid explicitly specifying NULL to apply the column's default value when migrating Oracle tables with DEFAULT ON NULL.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/dense_rank?rev=1766479485&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-23T08:44:45+00:00</dc:date>
        <title>DENSE_RANK Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/dense_rank?rev=1766479485&amp;do=diff</link>
        <description>In Oracle and MariaDB, the DENSE_RANK window function assigns a rank without gaps when the preceding rows have identical values. But Oracle and MariaDB handle NULL values differently. 

Consider an example:


  CREATE TABLE colors (name VARCHAR(30));
 
  -- Insert sample rows
  INSERT INTO colors VALUES ('Green');
  INSERT INTO colors VALUES ('Red');
  INSERT INTO colors VALUES (NULL);
  INSERT INTO colors VALUES ('Blue');
  INSERT INTO colors VALUES ('Green');</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/empty_blob?rev=1749224745&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-06T15:45:45+00:00</dc:date>
        <title>EMPTY_BLOB Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/empty_blob?rev=1749224745&amp;do=diff</link>
        <description>In Oracle, the EMPTY_BLOB function creates an empty BLOB locator i.e. an empty (with 0 length), but non-NULL BLOB value.

In MariaDB, you can use x'' constant (empty binary string).

Oracle:


  -- A sample table
  CREATE TABLE t1 (
    c1 BLOB DEFAULT EMPTY_BLOB()
  );</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/empty_clob?rev=1749239826&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-06T19:57:06+00:00</dc:date>
        <title>EMPTY_CLOB Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/empty_clob?rev=1749239826&amp;do=diff</link>
        <description>In Oracle, the EMPTY_CLOB function creates an empty CLOB locator i.e. an empty (with 0 length), but non-NULL CLOB value.

In MariaDB, you can use '' constant (empty string).

Oracle:


  -- A sample table
  CREATE TABLE t1 (
    c1 CLOB DEFAULT EMPTY_CLOB()
  );</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/extract?rev=1766565223&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-24T08:33:43+00:00</dc:date>
        <title>EXTRACT (Datetime) Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/extract?rev=1766565223&amp;do=diff</link>
        <description>In Oracle and MariaDB, the EXTRACT function returns the value of a specified datetime field (year, month, day etc.) from a datetime.

Oracle:


  -- Get the day of December 24, 2025
  SELECT EXTRACT(DAY FROM DATE '2025-12-24') FROM dual;
  /* 24 */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/goto?rev=1748962936&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-03T15:02:16+00:00</dc:date>
        <title>GOTO Statement - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/goto?rev=1748962936&amp;do=diff</link>
        <description>In Oracle, the GOTO statement allows you to unconditionally jump to a specified part of the code.

MariaDB does not support the GOTO statement, but you can use the LEAVE statement with a labeled BEGIN-END block. 

Oracle:


  -- A sample procedure
  CREATE OR REPLACE PROCEDURE sp1
  AS
  BEGIN
    DBMS_OUTPUT.PUT_LINE('A');
  
    GOTO label;
    DBMS_OUTPUT.PUT_LINE('B');
  
    &lt;&lt;label&gt;&gt;
    DBMS_OUTPUT.PUT_LINE('C');
  END;
  /</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/grant?rev=1738694404&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-04T18:40:04+00:00</dc:date>
        <title>GRANT Statement - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/grant?rev=1738694404&amp;do=diff</link>
        <description>In Oracle and MariaDB, the GRANT statement grants provileges or roles to a user, but some clauses differ and require conversion. 

  Oracle  MariaDB  1  GRANT DEBUG ON tab TO user  Access with debugger  Commented  2  GRANT CONNECT TO user  Connect to the database  GRANT USAGE ON *.* TO user  3  GRANT CREATE SESSION TO user  Connect to the database  GRANT USAGE ON *.* TO user  4  GRANT CREATE SEQUENCE TO user  Create sequences  GRANT CREATE ON *.* TO user  5  GRANT CREATE SYNONYM TO user  Create …</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/identity?rev=1666301266&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-20T21:27:46+00:00</dc:date>
        <title>IDENTITY Columns - Generate IDs - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/identity?rev=1666301266&amp;do=diff</link>
        <description>IDENTITY column property allows you to automatically generate sequential integer numbers (IDs) for a column. IDENTITY columns are available since Oracle 12c. 

In MariaDB you can use AUTO_INCREMENT column property. Note that you can use the AUTO_INCREMENT table property to define the start value, but you cannot specify the increment step, it is always 1.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/initcap?rev=1639056566&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-09T13:29:26+00:00</dc:date>
        <title>INITCAP Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/initcap?rev=1639056566&amp;do=diff</link>
        <description>In Oracle the INITCAP function capitalizes the first letter of each word and lowercases all other letters in a string. Words are delimited by a space or any other non-alphanumeric letter.

In MariaDB you can use a user-define function (UDF) to implement this functionality (see below).</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/instr?rev=1769798027&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-30T18:33:47+00:00</dc:date>
        <title>INSTR Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/instr?rev=1769798027&amp;do=diff</link>
        <description>In Oracle the INSTR function allows you to find the position of a substring within a string. It accepts 2, 3 or 4 parameters. 

Oracle's INSTR function also supports a negative starting position, meaning that it is counted backward from the end of the string and the search is performed backward from the resulting position.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/is_json?rev=1750011283&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-15T18:14:43+00:00</dc:date>
        <title>IS JSON Condition - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/is_json?rev=1750011283&amp;do=diff</link>
        <description>In Oracle, the IS JSON boolean condition checks if the specified value is valid JSON data. In MariaDB, you can use the JSON_VALID function.

Oracle:


  -- IS JSON returns TRUE for valid JSON, and FALSE for invalid
  SELECT
    CASE WHEN '{&quot;a&quot;:1}' IS JSON THEN 'Ok' ELSE 'Not Valid' END AS c1
  FROM dual;</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/last_day?rev=1621955426&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-25T15:10:26+00:00</dc:date>
        <title>LAST_DAY Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/last_day?rev=1621955426&amp;do=diff</link>
        <description>In Oracle and MariaDB, LAST_DAY function returns the date of the last day of the month for the specified datetime expression.

Note that Oracle LAST_DAY returns the DATE data type that includes both date and time, while MariaDB LAST_DAY returns the DATE data type that includes the date part only (year, month and day).</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/length?rev=1630950381&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-06T17:46:21+00:00</dc:date>
        <title>LENGTH Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/length?rev=1630950381&amp;do=diff</link>
        <description>In Oracle the LENGTH function returns the string length in characters.

MariaDB also provides the LENGTH function, but it returns the string length in bytes in native mode, and length in characters in Oracle compatibility mode. 

In native mode, you have to convert Oracle LENGTH to MariaDB CHAR_LENGTH function that returns the string length in characters.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/listagg?rev=1766413942&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-22T14:32:22+00:00</dc:date>
        <title>LISTAGG Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/listagg?rev=1766413942&amp;do=diff</link>
        <description>In Oracle you can use the LISTAGG function to concatenate strings from multiple rows into a single row value. 

In MariaDB you can use the GROUP_CONCAT function. Note that LISTAGG uses '' empty string as the default separator, whereas GROUP_CONCAT uses a comma by default.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/lpad?rev=1631016613&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-07T12:10:13+00:00</dc:date>
        <title>LPAD Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/lpad?rev=1631016613&amp;do=diff</link>
        <description>In Oracle, the LPAD function returns the string left-padded to the specified number of characters. LPAD accepts 2 or 3 parameters in Oracle.

MariaDB also provides the LPAD function, and since MariaDB 10.3.1 it accepts 2 or 3 parameters, so no conversion is required.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/months_between?rev=1631567715&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-13T21:15:15+00:00</dc:date>
        <title>MONTHS_BETWEEN Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/months_between?rev=1631567715&amp;do=diff</link>
        <description>In Oracle, MONTHS_BETWEEN(date1, date2) function returns the number of months between two dates as a decimal number. 

Note that MariaDB TIMESTAMPDIFF(month, date2, date1) function does not return exactly the same result, and you have to use an user-defined function if you need to fully emulate the Oracle MONTHS_BETWEEN function (see UDF's code below).</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/next_day?rev=1765786046&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-15T08:07:26+00:00</dc:date>
        <title>NEXT_DAY Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/next_day?rev=1765786046&amp;do=diff</link>
        <description>In Oracle, the NEXT_DAY function returns the date of the next specified weekday following a given date.

In MariaDB, you can use an expression with the DATE_ADD and WEEKDAY functions to get the same result.


Oracle:


  ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

  -- Get the date of next Thursday following 2025-12-15 (Monday), the time part remained unchanged
  SELECT NEXT_DAY(TIMESTAMP '2025-12-15 10:34:17', 'Thursday') FROM dual;
  /* 2025-12-18 10:34:17 */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/number?rev=1727462770&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-27T18:46:10+00:00</dc:date>
        <title>NUMBER Data Type - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/number?rev=1727462770&amp;do=diff</link>
        <description>In Oracle, the NUMBER is the main data type to store all numeric values including integers, fixed and floating point numbers. 

In MariaDB, you can use TINYINT, SMALLINT, INT and BIGINT for integers, DECIMAL or NUMERIC for fixed point numbers, FLOAT and DOUBLE for approximate floating point numbers.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/nvarchar2?rev=1738573816&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-03T09:10:16+00:00</dc:date>
        <title>NVARCHAR2 Data Type - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/nvarchar2?rev=1738573816&amp;do=diff</link>
        <description>In Oracle, the NVARCHAR2(n) data type stores variable-length Unicode character strings of up to n characters. The maximum size is 4,000 or 32,767 bytes if the MAX_STRING_SIZE initialization parameter is set to EXTENDED (which is not set by default).</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/nvl?rev=1766394695&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-22T09:11:35+00:00</dc:date>
        <title>NVL Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/nvl?rev=1766394695&amp;do=diff</link>
        <description>In Oracle, the NVL function allows you to replace NULL with the specified expression: it returns the first operand if it is not NULL, and the second operand otherwise.

MariaDB also provides the NVL function (since 10.3.1) in both native and Oracle compatibility modes.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/nvl2?rev=1766392424&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-22T08:33:44+00:00</dc:date>
        <title>NVL2 Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/nvl2?rev=1766392424&amp;do=diff</link>
        <description>In Oracle, the NVL2(exp, exp2, exp3) function evaluates exp and returns exp2 if exp is not NULL, otherwise, it returns exp3.

MariaDB also provides the NVL2 function (since 10.3.1) in both native and Oracle compatibility modes. 

Oracle:


  -- Replace NULL
  SELECT NVL2('John', 'A', 'N/A') FROM dual;
  /* A */

  -- Replace NULL
  SELECT NVL2(NULL, 'A', 'N/A') FROM dual;
  /* N/A */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/offset_fetch_first?rev=1728996117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-15T12:41:57+00:00</dc:date>
        <title>OFFSET and FETCH FIRST - Row Limiting - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/offset_fetch_first?rev=1728996117&amp;do=diff</link>
        <description>In Oracle 12c and later you can use OFFSER and FETCH FIRST clause to limit the rows returned by the query. In MariaDB you can use LIMIT clause, but it does not support all Oracle clauses, see below. 

Consider the following sample table:


  CREATE TABLE products (name VARCHAR(30), category INT);

  INSERT INTO products VALUES ('Apple', 1);
  INSERT INTO products VALUES ('Melon', 1);
  INSERT INTO products VALUES ('Orange', 2);</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/order_by_nulls?rev=1728650181&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-11T12:36:21+00:00</dc:date>
        <title>ORDER BY NULLS FIRST or LAST - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/order_by_nulls?rev=1728650181&amp;do=diff</link>
        <description>Oracle allows you to specify how NULL values are ordered by ORDER BY clause. MariaDB does not support this so queries can return different results as NULLs are last in Oracle and first in MariaDB by default. 

Consider sample data:


  CREATE TABLE colors (name VARCHAR(30), category CHAR(1));

  INSERT INTO colors VALUES ('Green', 'G');
  INSERT INTO colors VALUES ('Black', NULL);
  INSERT INTO colors VALUES ('Red', 'R');</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/partition_by_list?rev=1747316111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-15T13:35:11+00:00</dc:date>
        <title>PARTITION BY LIST - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/partition_by_list?rev=1747316111&amp;do=diff</link>
        <description>Both Oracle and MariaDB support list partitioning, which allows you to partition a table based on a list of values for a specified column, but some clauses differ and require conversion. 

Oracle:


   -- A sample list-partitioned table
  CREATE TABLE orders (
    name VARCHAR2(30),
    category CHAR(1)
  )
  PARTITION BY LIST (category)  
   (PARTITION &quot;A&quot; VALUES ('A'),
    PARTITION &quot;B&quot; VALUES ('B'),
    PARTITION &quot;OTHERS&quot; VALUES (DEFAULT));
  /* Table created. */
  
  -- Inserting a sample ro…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/partition_by_range?rev=1740551570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-26T06:32:50+00:00</dc:date>
        <title>PARTITION BY RANGE - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/partition_by_range?rev=1740551570&amp;do=diff</link>
        <description>Both Oracle and MariaDB support range partitioning, which allows you to partition a table based on a range of values for a specified column, but some clauses differ and require conversion. 

Oracle:


   -- A sample range-partitioned table
   CREATE TABLE orders
   (
     name CHAR(1),
     created_dt TIMESTAMP(6)
   )
   PARTITION BY RANGE (created_dt) INTERVAL (NUMTODSINTERVAL(1, 'DAY')) 
    (PARTITION &quot;P_01JAN2025&quot; VALUES LESS THAN (TIMESTAMP '2025-01-01 00:00:00'),
     PARTITION &quot;P_02JAN20…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/pipelined_function?rev=1742973076&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-26T07:11:16+00:00</dc:date>
        <title>PIPELINED Functions - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/pipelined_function?rev=1742973076&amp;do=diff</link>
        <description>In Oracle a user-defined function (UDF) can return multiple records (a table-valued function), enabling you to query the function directly in the FROM clause like a regular table.

MariaDB does not support table-valued functions but you can use JSON arrays and JSON functions to implement them.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/power?rev=1631030122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-07T15:55:22+00:00</dc:date>
        <title>POWER Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/power?rev=1631030122&amp;do=diff</link>
        <description>In Oracle, the POWER function raises a value to the specified power. MariaDB also provides the POWER function, so no conversion is required.

Oracle:


  -- Raise 2 to 3 power
  SELECT POWER(2, 3) FROM dual;
  # 8


MariaDB:


  -- Raise 2 to 3 power
  SELECT POWER(2, 3);
  # 8</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/raise_application_error?rev=1731497450&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-13T11:30:50+00:00</dc:date>
        <title>RAISE_APPLICATION_ERROR Procedure - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/raise_application_error?rev=1731497450&amp;do=diff</link>
        <description>In Oracle, the RAISE_APPLICATION_ERROR procedure allows you to raise an user-defined error with the error number in the negative range from -20000 to -20999. 

In MariaDB, you can use the SIGNAL statement with the recommended SQLSTATE value '45000' for user-defined exceptions.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/rank?rev=1766479863&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-23T08:51:03+00:00</dc:date>
        <title>RANK Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/rank?rev=1766479863&amp;do=diff</link>
        <description>In Oracle and MariaDB, the RANK window function assigns a rank with gaps when the preceding rows have identical values. But Oracle and MariaDB handle NULL values differently. 

Consider an example:


  CREATE TABLE colors (name VARCHAR(30));
 
  -- Insert sample rows
  INSERT INTO colors VALUES ('Green');
  INSERT INTO colors VALUES ('Red');
  INSERT INTO colors VALUES (NULL);
  INSERT INTO colors VALUES ('Blue');
  INSERT INTO colors VALUES ('Green');</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/regexp_substr?rev=1768380363&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-14T08:46:03+00:00</dc:date>
        <title>REGEXP_SUBSTR Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/regexp_substr?rev=1768380363&amp;do=diff</link>
        <description>In Oracle and MariaDB, the REGEXP_SUBSTR function returns the substring that matches the regular expression.

Oracle's REGEXP_SUBSTR allows specifying four parameters, including the starting position and the Nth occurrence, while MariaDB's REGEXP_SUBSTR allows specifying only two parameters.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/replace?rev=1621843066&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T07:57:46+00:00</dc:date>
        <title>REPLACE Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/replace?rev=1621843066&amp;do=diff</link>
        <description>In Oracle and MariaDB, the REPLACE function allows you to replace or remove the specified substring from a string. 

Note that Oracle REPLACE accepts 2 or 3 parameters, while MariaDB REPLACE requires 3 parameters. 

Oracle:


  -- When 2 parameters are specified the substring is removed  
  SELECT REPLACE('abc', 'b') FROM dual;
  # ab
  
  -- Replacing with empty string '' is another way to remove the substring
  SELECT REPLACE('abc', 'b', '') FROM dual;
  # ab
  
  -- Third parameter allows you…</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/round?rev=1748538132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-29T17:02:12+00:00</dc:date>
        <title>ROUND Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/round?rev=1748538132&amp;do=diff</link>
        <description>In Oracle and MariaDB, the ROUND function rounds the number to the nearest value with the specified precision

Oracle:


  -- Round to integer
  SELECT ROUND(123.4) FROM dual;
  /* 123 */
  
  -- Round to 1 decimal digit (rounded to lower value as 4 &lt;= 5)
  SELECT ROUND(123.34, 1) FROM dual;
  /* 123.30 */  
  
  -- Round to 1 decimal digit (rounded to upper value as 6 &gt; 5)
  SELECT ROUND(123.36, 1) FROM dual;
  /* 123.40 */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/rpad?rev=1631022749&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-07T13:52:29+00:00</dc:date>
        <title>RPAD Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/rpad?rev=1631022749&amp;do=diff</link>
        <description>In Oracle, the RPAD function returns the string right-padded to the specified number of characters. RPAD accepts 2 or 3 parameters in Oracle.

MariaDB also provides the RPAD function, and since MariaDB 10.3.1 it accepts 2 or 3 parameters, so no conversion is required.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/sequence_order?rev=1514126624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-12-24T14:43:44+00:00</dc:date>
        <title>ORDER in CREATE SEQUENCE - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/sequence_order?rev=1514126624&amp;do=diff</link>
        <description>In Oracle you can specify the ORDER option in CREATE SEQUENCE statement to guarantee that sequence numbers are generated in order of request. Note that this option has relevance to Oracle RAC databases only:

Oracle:


  CREATE SEQUENCE sales_seq
    ORDER;
  -- Sequence created.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/soundex?rev=1770019175&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-02T07:59:35+00:00</dc:date>
        <title>SOUNDEX Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/soundex?rev=1770019175&amp;do=diff</link>
        <description>In Oracle and MariaDB, the SOUNDEX function returns a phonetic representation of a specified string. 

Oracle:


  SELECT SOUNDEX('Orange') FROM dual;
  /* O652 */


MariaDB:


  SELECT SOUNDEX('Orange');
  /* O652 */


For more information, see Oracle to MariaDB Migration.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/statement-level-triggers?rev=1765952218&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-17T06:16:58+00:00</dc:date>
        <title>Statement-Level Triggers - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/statement-level-triggers?rev=1765952218&amp;do=diff</link>
        <description>In Oracle, if you omit the FOR EACH ROW clause in CREATE TRIGGER, then the trigger is a statement trigger which is  executed once per triggering statement. 

MariaDB does not support statement-level triggers, and the FOR EACH ROW clause is mandatory.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/subquery_alias?rev=1721046226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-15T12:23:46+00:00</dc:date>
        <title>SELECT Subquery Alias - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/subquery_alias?rev=1721046226&amp;do=diff</link>
        <description>In Oracle, you can use a SELECT subquery without specifying an alias. In MariaDB you have to specify aliases for subqueries in SELECT statements. 

Oracle:


  -- No alias in subquery
  SELECT * 
  FROM 
    (SELECT * FROM cities);
  # Ok 
   
  -- Alias 't' is specified (it is optional)  
  SELECT * 
  FROM 
    (SELECT * FROM cities) t;
  # Ok</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/substr?rev=1742886386&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-25T07:06:26+00:00</dc:date>
        <title>SUBSTR Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/substr?rev=1742886386&amp;do=diff</link>
        <description>In Oracle and MariaDB, the SUBSTR function returns a substring from a string, starting at the specified position (which can be negative) and for the specified length, or until the end of the string if no length is provided.

In Oracle, a start position of 0 is treated as 1. In MariaDB (since 10.3.3), this behavior only occurs when Oracle Compatibility mode is enabled.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/sys_context?rev=1770305304&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-05T15:28:24+00:00</dc:date>
        <title>SYS_CONTEXT Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/sys_context?rev=1770305304&amp;do=diff</link>
        <description>In Oracle, the SYS_CONTEXT function retrieves system or session-level information previously set by the user application using the DBMS_SESSION.SET_CONTEXT procedure.

In MariaDB, system information is retrieved using dedicated built-in functions, while session-level information for applications can be stored and accessed using session variables.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/sys_guid?rev=1740581077&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-26T14:44:37+00:00</dc:date>
        <title>SYS_GUID Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/sys_guid?rev=1740581077&amp;do=diff</link>
        <description>In Oracle, the SYS_GUID function generates an Universal Unique Identifier (UUID) of RAW(16) data type. 

In MariaDB, you can use the SYS_GUID (MariaDB 10.6.1 and later) and UUID functions that return a UUID as a string. 

Note that Oracle's SYS_GUID() returns a value without hyphens (-) and in uppercase, while MariaDB's SYS_GUID also returns a value without hyphens but in lowercase, and UUID() returns a value with hyphens and in lowercase.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/sysdate?rev=1768138310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-11T13:31:50+00:00</dc:date>
        <title>SYSDATE Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/sysdate?rev=1768138310&amp;do=diff</link>
        <description>In Oracle, the SYSDATE function returns the current date and time for the database server's host operating system  at the statement execution time. 

In MariaDB, you can use the NOW() and SYSDATE() functions (parentheses are required), which also include the time. They both return the value in the session time zone.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/systimestamp?rev=1768139044&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-11T13:44:04+00:00</dc:date>
        <title>SYSTIMESTAMP Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/systimestamp?rev=1768139044&amp;do=diff</link>
        <description>In Oracle, the SYSTIMESTAMP function returns the current date and time with fractional seconds and with the time zone (TIMESTAMP WITH TIME ZONE data type) for the database server's host operating system.

In MariaDB, you can use the NOW(6) function, which returns the value in the session time zone and does not include the time zone.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/timestamp?rev=1740046768&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-20T10:19:28+00:00</dc:date>
        <title>TIMESTAMP Data Type - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/timestamp?rev=1740046768&amp;do=diff</link>
        <description>In Oracle,  the TIMESTAMP(p) data type stores date and time with fractional seconds but without time zone. In MariaDB, you can use the DATETIME(p) data type.

Oracle:


  -- Sample table with TIMESTAMP with milliseconds accuracy
  CREATE TABLE specs
  (
    item VARCHAR2(30),
    created_dt TIMESTAMP(3)
  );</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/to_char_datetime?rev=1767723389&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-06T18:16:29+00:00</dc:date>
        <title>TO_CHAR - Convert Datetime to String - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/to_char_datetime?rev=1767723389&amp;do=diff</link>
        <description>In Oracle, the TO_CHAR function converts a datetime value to string using a specified format. 

In MariaDB, you can use the DATE_FORMAT function. Note that the TO_CHAR and DATE_FORMAT format strings are different. 

MariaDB supports the TO_CHAR function starting with version 10.6.1 in both native and Oracle compatibility mode, with support limited to the following format specifiers: YYYY, YY, RRRR, RR, MM, MON, MONTH, MI, DD, DY, DAY, HH, HH12, HH24 and SS.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/to_char_number?rev=1747231001&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-14T13:56:41+00:00</dc:date>
        <title>TO_CHAR - Convert Number to String - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/to_char_number?rev=1747231001&amp;do=diff</link>
        <description>In Oracle, TO_CHAR function can convert a numeric value to string using the specified format. In MariaDB, you can use FORMAT function as well as other string functions and expressions.

Oracle:


  -- Convert the price to string format
  SELECT TO_CHAR(1000, 'FM$9,999,999') FROM dual;
  # $1,000</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/to_date?rev=1766589447&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-24T15:17:27+00:00</dc:date>
        <title>TO_DATE - Convert String to Datetime - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/to_date?rev=1766589447&amp;do=diff</link>
        <description>In Oracle, the TO_DATE function converts a string value to DATE data type value using a specified format. 

In MariaDB, you can use the STR_TO_DATE function. Note that the TO_DATE and STR_TO_DATE format strings are different. 

Oracle:


  -- Specify a datetime string literal and its exact format
  SELECT TO_DATE('2017-12-20', 'YYYY-MM-DD') FROM dual;</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/to_timestamp?rev=1770023588&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-02T09:13:08+00:00</dc:date>
        <title>TO_TIMESTAMP Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/to_timestamp?rev=1770023588&amp;do=diff</link>
        <description>In Oracle, the TO_TIMESTAMP function converts a string value to a TIMESTAMP data type value using a specified format. 

In MariaDB, you can use the STR_TO_DATE function. Note that the TO_TIMESTAMP and STR_TO_DATE format strings are different. 

Oracle:</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/translate?rev=1631103509&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-08T12:18:29+00:00</dc:date>
        <title>TRANSLATE Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/translate?rev=1631103509&amp;do=diff</link>
        <description>In Oracle, the TRANSLATE(string, from_string, to_string) function allows you to replace all occurrences of each character in from_string to the corresponding character in to_string.

In MariaDB you can use nested REPLACE expressions or an user-defined function.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/trunc_datetime?rev=1765808589&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-15T14:23:09+00:00</dc:date>
        <title>TRUNC - Truncate Datetime - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/trunc_datetime?rev=1765808589&amp;do=diff</link>
        <description>In Oracle, the TRUNC(datetime, 'unit') function truncates a datetime value to the specified unit (for example, setting the time to zero or setting the date to the first day of the month). By default, it truncates to the day.

In MariaDB, the TRUNC(datetime, 'unit') function is available since version 12.2 in the Oracle Compatibility mode only. In earlier versions, you can use the CAST, DATE and DATE_FORMAT functions.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/user?rev=1747834523&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-21T13:35:23+00:00</dc:date>
        <title>USER Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/user?rev=1747834523&amp;do=diff</link>
        <description>In Oracle, the USER function returns the name of the session user. In MariaDB, you can use the USER() function.


Oracle:


  -- Get the current user
  SELECT USER FROM dual;


MariaDB:


  -- Get the current user
  SELECT USER();


For more information, see Oracle to MariaDB Migration.</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/userenv?rev=1770032116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-02T11:35:16+00:00</dc:date>
        <title>USERENV Function - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/userenv?rev=1770032116&amp;do=diff</link>
        <description>In Oracle, the USERENV function returns information about the current session.

In MariaDB, session information must be retrieved using dedicated functions for each specific attribute.


Oracle:


  -- Get the current session ID
  SELECT USERENV('SESSIONID') FROM dual;
  /* 797676 */</description>
    </item>
    <item rdf:about="https://www.sqlines.com/oracle-to-mariadb/varchar2?rev=1725178943&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-01T08:22:23+00:00</dc:date>
        <title>VARCHAR2 Data Type - Oracle to MariaDB Migration</title>
        <link>https://www.sqlines.com/oracle-to-mariadb/varchar2?rev=1725178943&amp;do=diff</link>
        <description>In Oracle, the VARCHAR2(n) data type stores variable-length character strings up to n bytes (default) or characters with the maximum of 4000 or 32,767 bytes if MAX_STRING_SIZE initialization parameter is set to EXTENDED (not set by default).

In MariaDB, you can use VARCHAR(n) that can store up to 65,535 characters. But effective maximum length is subject to the maximum row size limit of 65,535 bytes (shared among all columns) and the character set used.</description>
    </item>
</rdf:RDF>
