Я работал с T-SQL в течение многих лет, но я только что перешел в организацию, которая потребует написания некоторых вещей об Oracle, возможно, просто простых операций CRUD, по крайней мере, пока я не встану на ноги. Я не собираюсь переносить базы данных из одной в другую, просто взаимодействуя с существующими базами данных Oracle с точки зрения разработки приложений. Если есть инструмент или утилита для простого перевода T-SQL в Oracle SQL, я ищу средство сопоставления ключевых слов.
P.S. Я слишком ленив к RTFM, к тому же это не будет большой частью моей роли, поэтому мне просто нужно что-то, что поможет мне ускориться немного быстрее.


Сопоставить их туда и обратно нетривиально, поэтому я сомневаюсь, что есть инструмент, который делает это автоматически. Но эта ссылка может вам помочь: http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm
Это нетривиально, но Oracle Workbench возьмет большую часть T-SQL и преобразует его.
Недешево (995 $), но это подойдет: swissql.com/products/sql-translator/sql-converter.html
Наиболее важные отличия от простого T-SQL:
Примечание. Я предполагаю, что вы не используете устаревший синтаксис SQL Server * = для объединений.
@jodonell: таблица, на которую вы ссылаетесь, немного устарела, oracle стал несколько более совместимым со стандартами после того, как 9i поддерживал такие вещи, как внешние соединения CASE и ANSI
Если вы замените бессмыслицу ISNULL и NVL на COALESCE, она будет работать в T-SQL и PL / SQL!
Перечисленные до сих пор языковые различия составляют банальный по сравнению с логическими различиями. Кто угодно может искать NVL. Что трудно найти
DDL
В SQL-сервере вы манипулируете своей схемой в любом месте и в любое время, практически без суеты.
В Oracle нам не нравится DDL в хранимых процедурах, поэтому вам придется прыгать через обручи. Вам необходимо использовать EXECUTE IMMEDIATE для выполнения функции DDL.
Таблицы температуры
В SQL Server, когда логика становится немного жесткой, обычным делом является сокращение sql и его разрешение во временную таблицу, а затем следующий шаг выполняется с использованием этой временной таблицы. MSSS позволяет очень легко это сделать.
В Oracle нам это не нравится. Установив промежуточный результат, вы полностью помешаете оптимизатору найти для вас ярлык. НО Если вы должны остановиться на полпути и сохранить промежуточные результаты, Oracle хочет, чтобы вы создавали временную таблицу заранее, а не на лету.
Замки
В MSSS вы беспокоитесь о блокировках, у вас нет подсказок для DML, у вас есть эскалация блокировок, чтобы уменьшить количество блокировок.
В Oracle мы не беспокоимся об этом таким образом.
Прочитать совершено
До недавнего времени MSSS не полностью обрабатывал изоляцию Read Committed, поэтому вы беспокоились о грязных чтениях.
Oracle поступает так на протяжении десятилетий.
так далее
MSSS не имеет концепции индексов Bitmap, IOT, кластеров таблиц, хэш-кластеров отдельных таблиц, неуникальных индексов, обеспечивающих уникальные ограничения ....
Если вы выполняете разовое преобразование, а не пытаетесь поддерживать две версии, вы должны посмотреть на Инструментальные средства миграции Oracle. Этот инструмент работает с Oracle SQLDeveloper (который вам действительно нужен, если вы работаете с Oracle). При этом выполняется преобразование схемы, данных и некоторой части T-SQL в PL / SQL. Хорошо зная и то, и другое, я обнаружил, что он работает примерно на 80%. Достаточно хорош, чтобы окупить преобразование основной части процедур и ручное преобразование оставшихся «более сложных» неизвестных частей.
Недешево (995 долларов), но этот инструмент отлично работает: http://www.swissql.com/products/sql-translator/sql-converter.html
Этот продукт / веб-сайт больше не существует
Я сделал несколько SQL-серверов для миграции Oracle. Невозможно выполнить миграцию, не переписав внутренний код. Слишком много различий между двумя базами данных и, что более важно, различий между двумя типами мышления программистов. Многие менеджеры думают, что эти 2 взаимозаменяемы, у меня были менеджеры, которые просили меня скопировать хранимые процедуры с SQL-сервера и скомпилировать их в Oracle, но это не подсказка! Toad - безусловно, лучший инструмент на рынке для поддержки приложений Oracle. Разработчик SQL в порядке, но разочаровал по сравнению с жабой. Я надеюсь, что этот оракул однажды догонит их продукт, но его еще нет. Удачного дня :) Скорее всего, если вы переходите на Oracle, на это есть причина, и для выполнения этого требования вам нужно будет переписать код серверной части, иначе у вас будет много проблем.
Я должен кое-что упомянуть.
1) Когда я работал над Oracle 8, вы не могли использовать «Select @Result», вместо этого вам приходилось использовать фиктивную таблицу следующим образом: «Select @Result from dual». Не уверен, что эта нелепость все еще существует.
2) В мире Oracle они, кажется, любят курсоры, и вам лучше их прочитать, они используют их все время AFAICS.
Удачи и наслаждайтесь,
это не сильно отличается от MS SQL. К счастью, мне больше не нужно с этим работать, и я снова чувствую себя комфортно с инструментами MS.
Несколько человек упомянули здесь преобразование назад и вперед. Я не знаю инструмента для преобразования из MSSQL в Oracle, но я использовал бесплатный инструмент MS для преобразования Oracle db в MSSQL, и он сработал для меня и преобразовал большой db без каких-либо проблем, которые я могу назвать. Он похож на инструмент «Доступ к MSSQL», который MS также предоставляет бесплатно. Наслаждаться
В Oracle SQL Developer есть инструмент Translation Scratch Editor. Вы можете найти его в Инструменты> Миграция.
Oracle SQL Developer можно бесплатно загрузить с сайта Oracle, и его легко установить.
это преобразование из TSQL в PL / SQL, а не наоборот.
Oracle Scratchlauncher переходит с T на PL. oracle.com/technetwork/database/migration/… Есть и другие инструменты: ceiton.com/CMS/EN/technologies/sql-compiler.html#Solution, но, вероятно, нет серебряной пули.
У меня сложилось впечатление, что большинство ответов сосредоточены на миграции всей базы данных или просто указывают на некоторые различия между T-SQL и PL / SQL. У меня недавно была такая же проблема. База данных Oracle существует, но мне нужно преобразовать целую кучу сценариев T-SQL в PL / SQL.
Я установил Разработчик Oracle SQL и запустил Переводчик Scratch Editor (Инструменты> Миграция> Редактор царапин).
Затем просто введите свой T-SQL, выберите правильный перевод в раскрывающемся списке (по умолчанию он должен быть «T-SQL в PL / SQL») и преобразуйте его.
Итак, вы нашли перевод надежным?
Для меня это было, да. Прошло некоторое время, поэтому я не уверен, что мне нужно было вносить незначительные изменения, но, возможно, лучше всего просмотреть сценарии (или некоторые из них). Кроме того, я почти уверен, что у меня там не было никаких экзотических вещей. Но они были надежными.
Привет, будет ли он конвертировать наоборот, например, PL SQL => SQL ??
@SanjokGurung Я так не думаю, но вы должны проверить, потому что это было много лет назад.
Он не может прочитать мой сценарий t-sql
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
(Отказ от ответственности, я работаю на продавца)