Разработчик переходит с SQL Server на Oracle - PullRequest
7 голосов
/ 02 сентября 2008

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

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

Ответы [ 8 ]

3 голосов
/ 03 сентября 2008

@ hamishcmcn

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

Вдобавок ко всему, основные различия между SQL Server и Oracle:

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

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

2 голосов
/ 04 сентября 2008

Конкатенация строк:
Оракул: || или 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)

2 голосов
/ 02 сентября 2008

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

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

1 голос
/ 03 сентября 2008

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

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

1 голос
/ 03 сентября 2008

@ hamishmcn

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

1 голос
/ 02 сентября 2008

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

совпадает с

INSERT INTO atable (a_varchar_column) VALUES (NULL);

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

0 голосов
/ 06 сентября 2008

до andy47, я не имел в виду, что вы можете использовать пустую строку в сравнении, но оракул рассматривает ее как ноль, если вы используете ее во вставке. Перечитайте мою запись, затем попробуйте следующий SQL:

CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '' );
SELECT * FROM atable WHERE acol IS NULL;

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

0 голосов
/ 02 сентября 2008

Если вам нужно, вы можете создавать и удалять временные таблицы в процедурах, используя команду Execute Immediate .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...