我已经使用过T-SQL多年了,但我刚刚搬到了一个需要编写一些Oracle东西的组织,可能只是简单的CRUD操作,至少在我找到我的脚之前。我不打算将数据库从一个数据库迁移到另一个数据库,只是从应用程序开发的角度与现有的Oracle数据库进行交互。是否有工具或实用程序可以轻松地将T-SQL转换为Oracle SQL,关键字映射器就是我正在寻找的东西。
P.S。我对RTFM太懒了,除了它不会成为我角色的重要部分所以我只想要一些东西让我加快速度。
答案 0 :(得分:20)
与逻辑差异相比,到目前为止列出的语言差异琐碎。任何人都可以查找NVL。什么难以查找
<强> DDL 强>
在SQL服务器中,您可以随时随地操纵架构,只需要很少或根本没有。
在Oracle中,我们不喜欢存储过程中的DDL,所以你已经跳过了箍。您需要使用EXECUTE IMMEDIATE来执行DDL功能。
临时表
在SQL Server中,当逻辑变得有点困难时,常见的是快速执行sql并将其解析为临时表,然后使用该临时表完成下一步。 MSSS可以很容易地做到这一点。
在Oracle中,我们不喜欢这样。通过强制中间结果,您可以完全阻止优化程序为您找到快捷方式。但是如果你必须中途停止并坚持中间结果,Oracle希望你提前制作临时表,而不是动态。
<强>锁强>
在MSSS中你担心锁定,你有nolock提示要应用于DML,你有锁升级以减少锁的数量。
在Oracle中,我们不会以这种方式担心这些。
阅读通讯
直到最近,MSSS还没有完全处理Read Committed隔离,所以你担心脏读。
Oracle几十年来一直如此。
<强>等强>
MSSS没有Bitmap索引,IOT,表群集,单表哈希群集,强制执行唯一约束的非唯一索引的概念....
答案 1 :(得分:14)
我得到的印象是大多数答案都集中在迁移整个数据库或只是指出T-SQL和PL / SQL之间的一些差异。我最近遇到了同样的问题。 Oracle数据库存在,但我需要将整个T-SQL脚本转换为PL / SQL。
我安装了Oracle SQL Developer并运行了Translation Scratch Editor(工具&gt;迁移&gt;翻译划痕编辑器)。
然后,只需输入您的T-SQL,在下拉列表中选择正确的翻译(它应默认为'T-SQL to PL / SQL'),然后将其转换。
答案 2 :(得分:4)
我不得不提。
1)当我使用Oracle 8时,您无法执行“Select @Result”,您必须使用虚拟表,如下所示“从双重选择@Result”。不确定这种荒谬是否仍然存在。
2)在Oracle世界中,他们似乎喜欢游标,你最好阅读它们,他们一直使用它们AFAICS。
祝你好运,享受,
它与MS SQL没有什么不同。值得庆幸的是,我不再需要使用它了,我又回到了MS工具的温暖中。
答案 3 :(得分:2)
普通T-SQL最重要的区别是:
请注意。我假设您不使用已弃用的SQL Server * =语法进行连接
@jodonell:您链接到的表有点过时,在9i支持CASE和ANSI外连接之后,oracle变得更符合标准
答案 4 :(得分:2)
如果用COALESCE替换你的ISNULL和NVL废话,它将在T-SQL和PL / SQL中运行!
答案 5 :(得分:1)
来回映射它们并非易事,所以我怀疑是否有一个自动执行它的工具。但是这个链接可能会帮助你:http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm
答案 6 :(得分:1)
我已经为oracle迁移做了一些SQL服务器。没有重写后端代码就无法迁移。两个数据库之间的差异太大,更重要的是程序员的两个思维集之间的差异。许多经理认为2是可以互换的,我有经理要求我从SQL服务器复制存储过程并在oracle中编译它们,而不是线索! Toad是目前市场上支持oracle应用程序的最佳工具。 SQL开发人员还可以,但与toad相比令人失望。我希望oracle有一天会把他们的产品赶上蟾蜍,但它还没有。祝你有美好的一天:)如果你正在迁移到oracle,这是有原因的,为了满足这个要求,你需要重写后端代码,否则你会遇到很多问题。
答案 7 :(得分:1)
在Oracle SQL Developer中,有一个名为Translation Scratch Editor的工具。你可以从Tools&gt;中找到它。迁移。
Oracle SQL Developer可以从Oracle免费下载,安装简单。
答案 8 :(得分:0)
如果您正在进行一次性转换,而不是尝试支持两个版本,则必须查看Oracle Migration Workbench。此工具适用于Oracle的SQLDeveloper(如果您使用的是Oracle,那么您应该使用它)。这样可以将模式,数据和一些T-SQL转换为PL / SQL。知道得很好,我发现它做了大约80%的工作。足够好以使转换大量程序,并手动转换剩余的“更强硬”的未知部分是值得的。
答案 9 :(得分:0)
不便宜(995美元),但这个工具效果很好:http://www.swissql.com/products/sql-translator/sql-converter.html
答案 10 :(得分:0)
这里有一些人提到过来回转。我不知道从MSSQL转换到Oracle的工具,但我使用免费的MS工具将Oracle数据库转换为MSSQL,它对我有用并转换了一个大型数据库而没有我可以调用的问题。它类似于MS也免费提供的Access to MSSQL工具。享受
答案 11 :(得分: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
(免责声明,我为供应商工作)