我们正在内部引入一个新项目,而以前我们所有的工作都在SQL Server上,新产品使用了oracle后端。开发人员从SQL Server迁移到Oracle
任何人都可以建议任何婴儿床床单或类似的东西给像我这样的SQL Server人一个主要区别的概要 - 希望能够尽快起床和运行。
我们正在内部引入一个新项目,而以前我们所有的工作都在SQL Server上,新产品使用了oracle后端。开发人员从SQL Server迁移到Oracle
任何人都可以建议任何婴儿床床单或类似的东西给像我这样的SQL Server人一个主要区别的概要 - 希望能够尽快起床和运行。
@hamishcmcn
你断言''== Null根本不是真的。在关系世界里,空值只能被理解为“我不知道”。当您将值与Null进行比较时,您从Oracle(以及大多数其他体面的数据库)得到的唯一结果是'False'。
关闭我的头顶SQL Server和Oracle之间的主要区别是:
大家对多个Oracle实例否则,请帮助我并添加更多内容。
注意空字符串处理方式的差异。
INSERT INTO atable (a_varchar_column) VALUES ('');
相同
INSERT INTO atable (a_varchar_column) VALUES (NULL);
我没有sqlserver
经验,但我明白,这两个
区分我从SQL Server迁移到Oracle是注意到的主要区别在Oracle中,您需要在SELECT语句中使用游标。 另外,临时表的使用方式也不相同。在SQL Server中,您可以在过程中创建一个,然后在最后删除它,但在Oracle中,应该已经在执行过程之前创建了一个临时表。
我会看看数据类型,因为它们很不相同。
如果需要,你可以创建和使用Execute Immediate命令删除程序中的临时表。
@hamishmcn
普遍认为是一个坏主意..应该只是被创建并留下在Oracle临时表(除非它一次关闭/很少使用)。临时表的内容对每个会话都是本地的,并在会话关闭时截断。支付创建/删除临时表的成本几乎没有意义,如果两个进程试图同时创建表并且意外地执行DDL,则甚至可能导致冲突。
你在这里提出的问题是一个巨大的话题,尤其是因为你没有真正地说过你正在使用数据库(例如,你打算从TSQL - > PL/SQL或者只是改变后端数据库Java应用程序连接到?)
如果你是严重的使用你的数据库选择的项目后备,那么我建议你挖一个深一点,并宣读由汤姆·凯特像Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions。
字符串连接:
Oracle:||或CONCAT()
SQL服务器:+
这些链接可能是有趣:
http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm(旧:Ora9 VS SQL 2000)
到andy47,我不是那个意思,你可以使用比较中的空字符串,但是如果在插入中使用它,oracle会将它视为null。 重新阅读我的条目,那么试试下面的SQL:
CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES('');
SELECT * FROM atable WHERE acol IS NULL;
,并避免了“的确是这样,不,它不是”的情况下,here is an external link
此链接提供了很多的有用的总结主要区别: [oracle和ms sql server的区别](http://www.bristle.com/Tips/SQL.htm#differences_between_oracle_and_ms_sql_server) – 2008-09-06 19:47:59