21

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

PS 我对 RTFM 太懒了,而且它不会成为我角色的重要组成部分,所以我只想让我加快速度。

4

12 回答 12

23

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

DDL

在 SQL Server 中,您可以随时随地操作您的架构,而无需大惊小怪。

在 Oracle 中,我们不喜欢存储过程中的 DDL,因此您需要跳过这些环节。您需要使用 EXECUTE IMMEDIATE 来执行 DDL 功能。

临时表

在 SQL Server 中,当逻辑变得有点困难时,常见的做法是缩短 sql 并将其解析为临时表,然后使用该临时表完成下一步。MSSS 可以很容易地做到这一点。

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

锁具

在 MSSS 中,您担心锁定,您没有可应用于 DML 的无锁提示,您有锁升级以减少锁的数量。

在 Oracle 中,我们不会以这种方式担心这些问题。

读已提交

直到最近,MSSS 还没有完全处理 Read Committed 隔离,所以您担心脏读。

几十年来,甲骨文一直如此。

ETC

MSSS 没有位图索引、IOT、表集群、单表哈希集群、强制唯一约束的非唯一索引的概念......

于 2009-03-11T21:53:19.180 回答
14

我的印象是大多数答案都集中在迁移整个数据库上,或者只是指出了 T-SQL 和 PL/SQL 之间的一些差异。我最近遇到了同样的问题。Oracle 数据库存在,但我需要将整个负载的 T-SQL 脚本转换为 PL/SQL。

我安装了Oracle SQL Developer并运行了Translation Scratch Editor(工具 > 迁移 > Scratch Editor)。

然后,只需输入您的 T-SQL,在下拉列表中选择正确的翻译(它应该默认为“T-SQL 到 PL/SQL”),然后进行转换。

于 2011-11-15T14:19:07.497 回答
4

我不得不提的事情。

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

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

祝你好运并享受,

它与 MS SQL 没有什么不同。谢天谢地,我不必再使用它了,我又回到了 MS 工具的温暖舒适中。

于 2010-04-18T20:26:56.903 回答
3

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

于 2008-09-05T14:27:57.640 回答
2

来回映射它们并非易事,所以我怀疑是否有一种工具可以自动完成。但是这个链接可能会帮助你:http: //vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm

于 2008-09-03T14:32:42.780 回答
2

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

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

笔记。我假设您不使用已弃用的 SQL Server *= 连接语法

@jodonell:您链接到的表有点过时了,在 9i 支持 CASE 和 ANSI 外连接之类的东西之后,oracle 变得更加符合标准

于 2008-09-03T14:52:21.313 回答
2

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

于 2010-04-18T20:12:57.907 回答
1

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

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

于 2010-12-20T14:11:39.933 回答
0

如果您正在进行一次性转换,而不是尝试支持两个版本,则必须查看Oracle Migration Workbench。此工具可与 Oracle 的 SQLDeveloper 一起使用(如果您使用 Oracle,您确实应该拥有它)。这会将模式、数据和一些 T-SQL 转换为 PL/SQL。两者都很好,我发现它完成了大约 80% 的工作。足以使转换大部分程序变得值得,并手动转换剩余的“更难”的未知部分。

于 2009-03-11T21:56:11.030 回答
0

不便宜(995 美元),但这个工具很好用:http ://www.swissql.com/products/sql-translator/sql-converter.html

于 2009-11-06T07:30:24.867 回答
0

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

于 2010-04-18T20:31:08.893 回答
0

jOOQ 有一个公开的、免费的翻译器,可以从这里的网站访问:https ://www.jooq.org/translate

它支持 DML、DDL 和一些过程语法元素。如果您想通过命令行在本地运行翻译,可以购买许可证,命令行的工作方式如下:

$ java -cp jooq-3.11.9.jar org.jooq.ParserCLI -t ORACLE -s "SELECT substring('abcde', 2, 3)"
select substr('abcde', 2, 3) from dual;

请参阅:https ://www.jooq.org/doc/latest/manual/sql-building/sql-parser/sql-parser-cli

(免责声明,我为供应商工作)

于 2019-01-29T11:43:22.840 回答