Microsoft T-SQL到Oracle PL / SQL的转换

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

我已经在T-SQL上工作了多年,但是我刚搬到一个组织,该组织将需要编写一些Oracle资料,至少只是简单的CRUD操作,直到我找到我的脚。从应用程序开发的角度来看,我不会仅与现有的Oracle数据库进行交互就将数据库从一个迁移到另一个。是否有工具或者实用程序可以轻松地将T-SQL转换为PL / SQL,关键字映射器是我正在寻找的东西。

P.S.我对RTFM太懒了,除了它在我的角色中不会扮演重要角色,所以我只希望有一些东西可以让我加快速度。

解决方案

回答

来回映射它们并非易事,因此我怀疑是否有一种工具可以自动执行此操作。但是此链接可能会对我们有所帮助:http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm

回答

普通T-SQL的最重要区别是:

  • NVL取代ISNULL
  • SYSDATE替换GETDATE()
  • 不支持CONVERT
  • 标识列必须替换为序列<-从技术上讲不是T-或者PL /,而只是SQL

笔记。我假设我们不对联接使用不赞成使用的SQL Server * =语法

@jodonell:我们链接到的表有些过时,在9i支持CASE和ANSI外部联接之类的内容之后,oracle已变得更加符合标准。

回答

如果用COALESCE替换ISNULL和NVL废话,它将在T-SQL和PL / SQL中工作!

回答

与逻辑差异相比,到目前为止列出的语言差异微不足道。任何人都可以查找NVL。很难查找的是

DDL

在SQL Server中,我们可以随时随地操纵架构,而几乎不必大惊小怪。

在Oracle中,我们不喜欢存储过程中的DDL,因此我们会无所适从。我们需要使用EXECUTE IMMEDIATE来执行DDL功能。

临时表

在SQL Server中,当逻辑变得有些棘手时,通常的事情是将sql快捷方式并将其解析为临时表,然后使用该临时表完成下一步。
MSSS使此操作非常容易。

在Oracle中,我们不喜欢这样。通过强制执行中间结果,可以完全阻止优化器为我们找到快捷方式。但是,如果我们必须中途停止并保留中间结果,Oracle希望我们提前而不是即时制作临时表。

锁具

在MSSS中,我们担心锁,没有锁提示适用于DML,有锁升级以减少锁数量。

在Oracle中,我们不必担心这种情况。

阅读已提交

直到最近,MSSS还没有完全处理Read Committed隔离,因此我们担心脏读。

甲骨文已经这样做了数十年。

等等

MSSS没有位图索引,IOT,表簇,单表哈希簇,强制唯一约束的非唯一索引等概念。

回答

如果我们要进行一次转换,而不是尝试支持两个版本,则必须查看Oracle Migration Workbench。该工具可与Oracle的SQLDeveloper一起使用(如果与Oracle一起使用,则应具有该工具)。这会将模式,数据和某些T-SQL转换为PL / SQL。很好地了解了两者,我发现它的工作量约为80%。足够好,可以值得转换大量程序,并手动转换其余的"更坚韧"的未知部分。

回答

价格不便宜(995美元),但此工具的效果很好:http://www.swissql.com/products/sql-translator/sql-converter.html

回答

我已经做了一些SQL服务器到oracle的迁移。如果不重写后端代码,则无法进行迁移。两个数据库之间的差异太多,更重要的是程序员的两种思维方式之间的差异。许多管理人员认为这2是可互换的,我曾让管理人员要求我从SQL Server复制存储过程并在oracle中进行编译,这不是一个线索!迄今为止,Toad是市场上支持oracle应用程序的最佳工具。 SQL开发人员还可以,但与toad相比令人失望。我希望甲骨文有一天会把他们的产品赶上蟾蜍,但现在还没有。祝我们有个美好的一天:)如果我们要迁移到oracle是有原因的,并且为了满足该要求,我们将需要重写后端代码,否则我们将遇到很多问题。

回答

我有话要说。

1)当我在Oracle 8上工作时,无法执行"选择@Result",而必须使用虚拟表,如下所示:"从双重选择@Result"。不知道这种荒谬是否仍然存在。

2)在Oracle世界中,他们似乎喜欢游标,而我们最好阅读它们,他们一直在AFAICS上使用它们。

祝我们好运,

它与MS SQL没什么不同。值得庆幸的是,我不再需要使用它了,我又回到了MS工具的温暖舒适中。

回答

这里有人提到来回转换。我不知道将MSSQL转换为Oracle的工具,但是我使用了免费的MS工具将Oracle数据库转换为MSSQL,它为我工作,并且转换了一个大型数据库,没有任何问题可以调用。它类似于MS还免费提供的Access to MSSQL工具。享受

回答

在Oracle SQL Developer中,有一个名为Translation Scratch Editor的工具。我们可以从工具>迁移中找到它。

Oracle SQL Developer是从Oracle免费下载的,安装简单。