Créer une procédure stockée et SQLite?

Est-il possible de créer une procédure stockée en utilisant SQLite?

SQLite a dû sacrifier d’autres caractéristiques utiles, telles que la haute concurrence, le contrôle d’access précis, un ensemble complet de fonctions intégrées, des procédures stockées , des fonctionnalités de langage SQL ésotériques, des extensions XML et / ou Java. ou l’évolutivité peta-byte, etc.

Source: Utilisations appropriées pour SQLite

Réponse : non

Voici pourquoi … Je pense que l’une des principales raisons d’avoir des procédures stockées dans une firebase database est que vous exécutez le code SP dans le même processus que le moteur SQL. Cela est logique pour les moteurs de firebase database conçus pour fonctionner en tant que service connecté au réseau, mais pour SQLite, il est impératif de l’exécuter en tant que DLL dans votre processus d’application plutôt que dans un processus de moteur SQL distinct. Il est donc plus logique d’implémenter toute votre logique métier, y compris ce qui aurait été du code SP dans le langage hôte.

Vous pouvez toutefois étendre SQLite avec vos propres fonctions définies par l’utilisateur dans le langage hôte (PHP, Python, Perl, C #, Javascript , Ruby, etc.). Vous pouvez ensuite utiliser ces fonctions personnalisées dans le cadre de SQLite select / update / insert / delete. Je l’ai fait en C # en utilisant SQLite de DevArt pour implémenter le hachage de mot de passe.

Si vous êtes toujours intéressé, Chris Wolf a réalisé une implémentation prototype de SQLite avec des procédures stockées. Vous pouvez trouver les détails sur son blog: Ajout de procédures stockées à SQLite

Cependant, il est possible de faire semblant en utilisant une table dédiée, nommée pour votre faux-sp, avec un déclencheur AFTER INSERT. Les lignes de la table dédiée contiennent les parameters de votre fake sp, et si vous avez besoin de renvoyer des résultats, vous pouvez avoir une deuxième table (poss. Temp) (avec le nom associé au faux-sp) pour contenir ces résultats. Il faudrait deux requêtes: d’abord pour INSÉRER les données dans la fake-sp-sortinggger-table et les secondes pour sélectionner SELECT à partir de la fake-sp-results-table, qui pourrait être vide ou avoir un champ de message si quelque chose ne va pas. .