Я сказал это в комментарии, но я собираюсь сказать это снова здесь.
Безопасность, охрана, безопасность.
Когда код sql встроен в ваше приложение, вы должны открыть базовые таблицы для прямого доступа. Это может звук в порядке. До тех пор, пока вы не столкнетесь с какой-нибудь SQL-инъекцией, которая скремблирует все поля varchar в вашей базе данных.
Некоторые люди могут сказать, что они обойдутся этим, используя магические кавычки или какой-либо другой способ должным образом избежать их встроенного sql. Проблема, тем не менее, в том, что один запрос не удалось избежать. Или, разработчик, который забыл не разрешать загрузку кода. Или веб-сервер, который был взломан, что позволило злоумышленнику загрузить код. Или ... ты понимаешь. Трудно охватить все ваши базы.
Я считаю, что все современные базы данных имеют встроенную защиту. Вы можете просто запретить прямой доступ к таблице (выбрать, вставить, обновить и удалить) и заставить все пройти через ваши s'procs. Делая это, общие атаки больше не будут работать. Вместо этого злоумышленник должен будет потратить время, чтобы изучить интимные детали вашей системы. Это увеличивает их «стоимость» с точки зрения времени, затраченного и останавливающего прохождение атаки и червя.
Я знаю, что мы не можем обезопасить себя от всего, но если вы потратите время на то, чтобы архитектовать свои приложения, чтобы затраты на его взломы намного перевешивали преимущества, тогда вы серьезно уменьшите свой потенциал потери данных. Это означает использование всех доступных инструментов безопасности.
Наконец, что касается идеи не использовать s'procs, потому что вам, возможно, придется переносить на другой rdbms: во-первых, большинство приложений не меняют серверы баз данных. Во-вторых, в случае, если это реальная возможность, вам все равно нужно использовать код ANSI sql; которые вы можете сделать в своих процессах. В-третьих, вам придется переоценить весь ваш код sql, несмотря ни на что, и это намного проще, если этот код находится в одном месте. В-четвертых, все современные базы данных теперь поддерживают s'procs. В-пятых, при использовании s'proc вы можете настраивать свой sql для базы данных, в которой он работает, чтобы использовать расширения sql этой конкретной базы данных.
Предложить удалить php-тег, поскольку php может быть легко любым другим языком программирования. – Iain