Відповіді:
SQLite повинен був пожертвувати іншими характеристиками, які деякі люди вважають корисними, такими як висока конкурентоспроможність, дрібнозернистий контроль доступу, багатий набір вбудованих функцій, зберігаються процедури , езотеричні функції мови SQL, розширення XML та / або Java, тера- або пета-байт масштабованість тощо
Джерело: Відповідне використання для SQLite
Відповідь : НІ
Ось чому ... Я думаю, що ключовою причиною зберігання проектів у базі даних є те, що ви виконуєте код SP у тому ж процесі, що і двигун SQL. Це має сенс для двигунів баз даних, призначених для роботи в мережі, але імператив для SQLite набагато менше, враховуючи, що він працює як DLL у вашому процесі застосування, а не в окремому процесі роботи SQL. Тому має сенс реалізувати всю свою логіку бізнесу, включаючи те, що було б кодом SP на мові хоста.
Однак ви можете розширити SQLite за допомогою власних визначених користувачем функцій на мові хоста (PHP, Python, Perl, C #, Javascript , Ruby тощо). Потім ви можете використовувати ці спеціальні функції як частину будь-якого вибору / оновлення / вставки / видалення SQLite. Я робив це в C #, використовуючи SQLite DevArt для реалізації хешування паролів.
Якщо ви все ще зацікавлені, Кріс Вольф зробив прототип реалізації SQLite із збереженими процедурами. Докладні відомості можна знайти в його публікації в блозі: Додавання збережених процедур у SQLite
Тим не менш, можна підробити це за допомогою спеціальної таблиці, названої для вашого fake-sp, після ПІСЛЯ ВСТАВКИ. Виділені рядки таблиці містять параметри для вашої підробленої sp, і якщо вона потребує повернення результатів, ви можете мати другу (можливо, темп) таблицю (з назвою, пов'язаною з підробленою), щоб містити ці результати. Для цього знадобляться два запити: перший для ВСТАВЛЕННЯ даних у таблицю підроблених sp-тригерів, а другий для вибору SELECT із таблиці підроблених sp-результатів, яка може бути порожньою, або мати поле повідомлення, якщо щось пішло не так .