Dans mon projet, j'ai une database en SQL qui fonctionnait bien. Mais maintenant je dois faire l'application supporte aussi Oracle DB.
Certaines limitations que j'ai découvert était que dans Oracle, il n'y a pas de champ de bits et le nom de la table ne peut pas être supérieur à 30 caractères. Y a-t-il d'autres limites que je dois garder à l'esprit.
Toute suggestion de l'expérience passée sera utile.
Si je me souviens bien de mes premiers jours Oracle:
il n'y a pas de spécification de colonne IDENTITY
dans Oracle (vous devez utiliser des séquences à la place)
vous ne pouvez pas simplement returnner un SELECT (columns)
d'une procédure stockée (vous devez utiliser REF CURSOR
)
bien sûr, tous les proc / funcs stockés sont différents (PL / SQL d'Oracle n'est pas identique à T-SQL)
La contrepartie SQL ISNULL
dans Oracle est NVL
select ISNULL(col, 0)... select NVL(col, 0)...
Vous aurez également du mal si vous essayez de sélectionner sans un dans Oracle. Utilisez dual
:
select 'Hello' from DUAL
Gardez à l'esprit également que dans Oracle, il existe une distinction entre PL / SQL (SQL procédural) et SQL pur. Ce sont deux langues distinctes et séparées, qui sont communément combinées.
Lorsque vous ajoutez une colonne à un select *
Select * from table_1 order by id;
vous devez préfixer le * par le nom_table ou un alias
Select (row_number() over (order by id)) rn, t.* from table_1 t order by id;
Oracle ne fait pas la distinction entre null et '' (string vide). Pour insert et mettre à jour vous pouvez utiliser '', mais pour interroger vous devez utiliser null
create table t1 ( id NUMBER(10), val varchar2(20) ); Insert into t1 values (1, ''); Insert into t1 values (2, null); Select * from t1 where ssortingngval = 0; -- correct but empty Select * from t1 where ssortingngval is null; -- returns both rows
ORACLE ne prend pas en charge la clause TOP . Au lieu de TOP, vous pouvez utiliser ROWNUM .
SQL Server: TOP (Transact-SQL)
SELECT TOP 3 * FROM CUSTOMERS
ORACLE: ROWNUM Pseudocolonne
SELECT * FROM CUSTOMERS WHERE ROWNUM <= 3