SQL adaptation guide for Oracle Database 11, 12 / Data manipulation |
Almost all Informix® functions and SQL constants have a different name or behavior in ORACLE.
Here is a comparison list of functions and constants:
Informix | ORACLE |
---|---|
today | trunc( sysdate ) |
current year to second | sysdate |
day( value ) | to_number( to_char( value, 'dd' ) ) |
extend( dtvalue, first to last ) | to_date( nvl( to_char( dtvalue, 'fmt-mask' ), '19000101000000' ), 'fmt-mask' ) |
mdy(m,d,y) | to_date( to_char(m,'09') || to_char(d,'09') || to_char(y,'0009'), 'MMDDYYYY' ) |
month( date ) | to_number( to_char( date, 'mm' ) ) |
weekday( date ) | to_number( to_char( date, 'd' ) ) -1 |
year( date ) | to_number( to_char( date, 'yyyy' ) ) |
date( "string" | integer ) | No equivalent - Depends from DBDATE in IFX |
user | user ! Uppercase/lowercase: See The User Constant |
trim( [leading | trailing | both "char" FROM] "string") | ltrim() and rtrim() |
length( c ) | length( c ) ! Different behavior: See The Length Function |
pow(x,y) | power(x,y) |
You must review the SQL statements using TODAY / CURRENT / EXTEND expressions.
You can define stored functions in the ORACLE database, to simulate Informix functions. This works only for functions that are not already implemented by ORACLE:
create or replace function month( adate in date ) return number is v_month number; begin v_month:= to_number( to_char( adate, 'mm' ) ); return (v_month); end month;