| 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;