Разработчик переходит с SQL Server на Oracle

Мы создаем новый проект, и хотя раньше вся наша работа была на SQL Server, новый продукт использует серверную часть Oracle.

Может ли кто-нибудь посоветовать какие-либо шпаргалки или что-то подобное, чтобы дать человеку SQL Server вроде меня краткое изложение основных различий - хотел бы иметь возможность как можно скорее приступить к работе.

Эта ссылка предоставляет полезный обзор многих основных отличий: Различия между Oracle и MS SQL Server

Rich Lawrence 06.09.2008 23:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
1
4 008
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Обратите внимание на разницу в способе обработки пустой строки. INSERT INTO atable (a_varchar_column) VALUES ('');

такой же как

INSERT INTO atable (a_varchar_column) VALUES (NULL);

У меня нет опыта работы с sqlserver, но я понимаю, что он различает эти два

Основное отличие, которое я заметил при переходе с SQL Server на Oracle, заключалось в том, что в Oracle вам нужно использовать курсоры в операторах SELECT. Кроме того, временные таблицы используются иначе. В SQL Server вы можете создать ее в процедуре, а затем удалить ее в конце, но в Oracle у вас уже должна быть временная таблица, созданная до выполнения процедуры.

Я бы тоже посмотрел на типы данных, потому что они совершенно разные.

При необходимости вы можете создавать и удалять временные таблицы в процедурах с помощью команды Выполнить немедленно.

@hamishmcn

Как правило, это плохая идея. Временные таблицы в oracle следует просто создавать и оставлять (если только они не отключены или используются очень редко). Содержимое временной таблицы является локальным для каждого сеанса и обрезается при закрытии сеанса. Нет смысла оплачивать стоимость создания / удаления временной таблицы, это может даже привести к конфликтам, если два процесса попытаются создать таблицу одновременно и неожиданно завершат выполнение DDL.

Ответ принят как подходящий

@hamishcmcn

Ваше утверждение, что '' == Null, просто неверно. В реляционном мире Null следует понимать только как «я не знаю». Единственный результат, который вы получите от Oracle (и большинства других достойных баз данных), когда вы сравните значение с Null, - это «False».

На первый взгляд, основные различия между SQL Server и Oracle заключаются в следующем:

  • Научитесь любить транзакции, они ваш друг - автоматическая фиксация - нет.
  • Последовательность чтения и отсутствие блокирующих чтений
  • База данных SQL Server == Схема Oracle
  • PL / SQL имеет гораздо больше возможностей, чем T-SQL
  • Узнайте разницу между экземпляром и базой данных в Oracle
  • У вас может быть более одного экземпляра Oracle на сервере
  • Никаких заостренных волшебников (если они вам действительно не нужны)

Все остальные, пожалуйста, помогите мне и добавьте еще.

То, что вы здесь задали, является огромной темой, тем более, что вы на самом деле не сказали, для чего вы используете базу данных (например, собираетесь ли вы переходить с TSQL -> PL / SQL или просто изменяете внутреннюю базу данных вашего java-приложения подключен к?)

Если вы серьезно относитесь к использованию выбранной вами базы данных в полной мере, то я предлагаю вам копнуть немного глубже и прочитать что-нибудь вроде Экспертная архитектура базы данных Oracle: методы и решения программирования 9i и 10g Тома Кайта.

Конкатенация строк:
Оракул: || или concat ()
Sql-сервер: +

Эти ссылки могут быть интересны:
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;

И чтобы избежать ситуации «да, это так, нет, это не так», вот внешняя ссылка

Другие вопросы по теме