在我的项目中,我有一个SQL数据库工作正常。但是现在我必须使应用程序支持oracle db。
我发现的一些限制是在Oracle中,没有位字段,表名不能大于30个字符。是否还有其他限制我需要牢记。
过去经验中的任何建议都会有所帮助。
答案 0 :(得分:3)
如果我从早期的甲骨文时代回忆正确的话:
Oracle中没有IDENTITY
列规范(您需要使用序列)
您不能简单地从存储过程返回SELECT (columns)
(您需要使用REF CURSOR
)
当然,所有存储的proc / func都不同(Oracle的PL / SQL与T-SQL不同)
答案 1 :(得分:2)
Oracle中的ISNULL
对应项NVL
select ISNULL(col, 0)...
select NVL(col, 0)...
如果您尝试在Oracle中没有from
的情况下进行选择,那么您也会遇到困难。使用dual
:
select 'Hello' from DUAL
还要记住,在Oracle中,PL / SQL(过程SQL)和纯SQL之间存在区别。它们是两种截然不同的语言,通常是组合在一起的。
答案 2 :(得分:2)
将列添加到select *
时Select * from table_1 order by id;
您必须在table_name或别名
前加上 * 的前缀Select
(row_number() over (order by id)) rn,
t.*
from table_1 t
order by id;
Oracle不区分null和''(空字符串)。对于插入和更新,您可以使用'',但要查询您必须使用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 stringval = 0; -- correct but empty
Select * from t1 where stringval is null; -- returns both rows
答案 3 :(得分:1)
ORACLE不支持 TOP 子句。您可以使用 ROWNUM 。
代替 TOPSQL Server: TOP (Transact-SQL)
SELECT TOP 3 * FROM CUSTOMERS
ORACLE: ROWNUM Pseudocolumn
SELECT * FROM CUSTOMERS WHERE ROWNUM <= 3