Хранимые процедуры имеют смысл для приложений профессионального уровня (IE уровня предприятия), где вы:
- Хотите, чтобы ваш инженер баз данных оптимизировал запросы для повышения производительности
- Хотите абстрагировать сложность запросов от простых API
- ХОЧУ, чтобы ваша логика распространялась, потому что часть того, что происходит в базе данных, может быть интеллектуальной собственностью, которую вы не хотите раскрывать другим сторонам
- ХОТИТЕ, чтобы ваша логика была распределена, потому что такова природа распределенных n-уровневых вычислений
- может потребоваться, чтобы инженер базы данных или администратор БД изменили схему без изменения кода приложения (хранимые процедуры, благодаря предоставлению API, обеспечивают уровень абстракции)
Есть и другие причины.
Подготовленные заявления лучше подходят для работы, выполняемой в течение сеанса. Но если вы тратите время на создание подготовленного оператора, вы, по сути, сделали все необходимое для создания хранимой процедуры. Разница в том, что хранимая процедура доступна в нескольких сеансах (при условии GRANTS в базе данных).
Чего я не могу понять, так это того, что если у вас есть опция для сохраненных процедур вместо подготовленных операторов, то почему вы будете беспокоиться о готовых инструкциях? Кажется, что большинство обсуждений SP и PS сосредоточены на различиях между ними, а не на том, почему использовать одно против другого. Это всегда сводится к тому, что «зависит от того, что вы пытаетесь сделать». Но я не видел хорошо организованного описания: используйте proc, если вам нужно VS, используйте оператор, если вам нужно ...