2013-10-03 3 views
0

Каждое приложение, которое я сделал, находится поверх базы данных, веб-стека с Oracle в качестве хранилища. Oracle PL/SQL всегда был для меня загадкой. Когда вы его используете? Это только в хранимых процедурах (я тоже этого не делаю).Когда вы используете PL/SQL?

Когда вы используете Oracle PL/SQL?

+1

Слишком широкая, но [в документации перечислены преимущества] (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/overview.htm#i9141). –

ответ

3

В Oracle язык PL/SQL используется в пакетах, процедурах, функциях и типах. Для дальнейшего чтения: PLSQL Documentation.

При использовании базы данных Oracle PL/SQL является одним из наиболее удобных способов прямого доступа к данным.

PL код/​​SQL очень компактен при непосредственном взаимодействии с данными, потому что нет языкового барьера с SQL:

  • Открытия курсоры, закрытие курсоры могут быть сделаны непосредственно на языке при использовании неявных курсоров.
  • Связывание всегда выполняется автоматически при использовании статического SQL.
  • Статические SQL-запросы проверяются во время компиляции, что означает отсутствие синтаксовой ошибки SQL во время выполнения.

Кроме того, напрямую запрашивая данные, вы не создаете искусственный кеш. Преимущество состоит в том, что проще реализовать безопасные механизмы многопользовательского блокирования. Большинство веб-приложений будут извлекать данные из базы данных, изменять данные локально и загружать их позже. В таком случае сложнее защитить систему от lost updates, например.

Поскольку может быть много приложений, которые взаимодействуют с одной базой данных, преимущество в эффективности и согласованности при реализации бизнес-правил на одном центральном уровне доступно для всех приложений: уровня PL/SQL.

+0

Итак, я предполагаю, что это не для людей, которым нужен ORM, как Hibernate? – johnny

+1

@johnny Вы по-прежнему взаимодействуете с базой данных. ORM может немного упростить интерфейс, но вы по-прежнему имеете дело с запросами, таблицами и индексами за сценой. IMO для простых простых приложений ORM может скрыть базу данных просто отлично. Но для многих внутренних приложений, где вам нужно дополнительное преимущество в производительности или масштабируемости, ORM может помешать оптимизации. В этом случае вы можете обнаружить, что PL/SQL более уместен и эффективен. YMMV, очевидно, =) –

1

Он используется в хранимых процедурах и пакетах, но также в триггерах и заданиях базы данных (dbms_scheduler). Хотя для второго 2 обычно лучше написать процедуру и вызвать это из триггера или задания.

Когда использовать это зависит от общей архитектуры и где вы хотите, чтобы бизнес-логика была. В каждой системе Oracle, в которой я работал, была вся логика приложения в pl/sql, которая добавляет дополнительную нагрузку на сервер базы данных, но сокращает передачу данных между базой данных и уровнями приложений. Если вы не хотите использовать базу данных, отличную от репозитория, есть более дешевые варианты, чем Oracle.

Смежные вопросы