从SQL Server迁移到Oracle的开发人员

时间:2020-03-05 18:46:25  来源:igfitidea点击:

我们正在内部增加一个新项目,而以前我们的所有工作都是在SQL Server上进行的,因此新产品使用的是oracle后端。

任何人都可以建议任何婴儿床床单之类的信息给像我这样的SQL Server人员一个主要差异的摘要,以便能够尽快启动并运行。

解决方案

回答

当心处理空字符串的方式上的差异。
将INERT INTO变为(a_varchar_column)值('');`

是相同的

INSERT INTO atable (a_varchar_column) VALUES (NULL);

我没有sqlserver的经验,但是我知道这可以区分两者

回答

从SQL Server迁移到Oracle时,我注意到的主要区别是在Oracle中,我们需要在SELECT语句中使用游标。
此外,临时表的使用方式也有所不同。在SQL Server中,我们可以在过程中创建一个,然后在最后将其DROP删除,但是在Oracle中,应该已经在执行该过程之前创建了一个临时表。

我也会看一下数据类型,因为它们完全不同。

回答

如果需要,我们可以使用"立即执行"命令在过程中创建和删除临时表。

回答

@hamishmcn

通常,这是个坏主意。.oracle中的临时表应该只创建并保留(除非它曾经关闭过/很少使用)。临时表的内容在每个会话中都是本地的,并在关闭会话时被截断。支付创建/删除临时表的成本几乎没有意义,如果两个进程尝试同时创建表并执行DDL意外提交,甚至可能导致冲突。

回答

@hamishcmcn

我们关于''== Null的说法根本不正确。在关系世界中," Null"仅应被理解为"我不知道"。将值与Null进行比较时,从Oracle(以及大多数其他体面的数据库)中获得的唯一结果是" False"。

我最想知道的是SQL Server与Oracle之间的主要区别是:

  • 学会热爱交易,他们是朋友-自动提交不是。
  • 读取一致性和缺少阻止读取
  • SQL Server数据库== Oracle模式
  • PL / SQL比T-SQL具有更多的功能
  • 了解Oracle中实例与数据库之间的区别
  • 一台服务器上可以有多个Oracle实例
  • 没有尖锐的点击向导(除非我们真的非常想要他们)

其他所有人,请帮助我并添加更多内容。

回答

我们在这里提出的问题是一个巨大的话题,尤其是因为我们尚未真正说出数据库的用途(例如,我们将要从TSQL-> PL / SQL还是只是更改Java应用程序的后端数据库)已连接到?)

如果我们真的想充分利用数据库的潜力,那么建议我们更深入地阅读并阅读诸如Tom Kyte撰写的Expert Oracle Database Architecture:9i和10g编程技术和解决方案之类的内容。

回答

字符串串联:
甲骨文:||或者concat()
SQL Server:+

这些链接可能很有趣:
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与Sql 2000)

回答

对于andy47,我并不是说可以在比较中使用空字符串,但是如果在插入中使用空字符串,oracle会将其视为null。
重新阅读我的条目,然后尝试以下SQL:

CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '' );
SELECT * FROM atable WHERE acol IS NULL;

为了避免出现"是,不是"的情况,这里有一个外部链接