Antworten:
SQLite musste andere Eigenschaften opfern, die einige Leute für nützlich halten, wie hohe Parallelität, fein abgestimmte Zugriffskontrolle, eine Vielzahl integrierter Funktionen, gespeicherte Prozeduren , esoterische SQL -Sprachfunktionen , XML- und / oder Java-Erweiterungen, tera- oder Peta-Byte-Skalierbarkeit und so weiter
Antwort : NEIN
Hier ist der Grund ... Ich denke, ein Hauptgrund für das Speichern von Prozessen in einer Datenbank ist, dass Sie SP-Code im selben Prozess wie die SQL-Engine ausführen. Dies ist für Datenbankmodule sinnvoll, die als netzwerkverbundener Dienst konzipiert sind. Für SQLite ist es jedoch weitaus weniger wichtig, dass es in Ihrem Anwendungsprozess als DLL ausgeführt wird und nicht in einem separaten SQL-Modulprozess. Daher ist es sinnvoller, Ihre gesamte Geschäftslogik zu implementieren, einschließlich des SP-Codes in der Hostsprache.
Sie können SQLite jedoch mit Ihren eigenen benutzerdefinierten Funktionen in der Hostsprache (PHP, Python, Perl, C #, Javascript , Ruby usw.) erweitern. Sie können diese benutzerdefinierten Funktionen dann als Teil jeder SQLite-Auswahl / Aktualisierung / Einfügung / Löschung verwenden. Ich habe dies in C # mit DevArts SQLite getan , um das Passwort-Hashing zu implementieren.
Wenn Sie immer noch interessiert sind, hat Chris Wolf einen Prototyp der Implementierung von SQLite mit gespeicherten Prozeduren erstellt. Die Details finden Sie in seinem Blogbeitrag: Hinzufügen gespeicherter Prozeduren zu SQLite
Dennoch ist es möglich , zu fälschen es eine eigene Tabelle mit dem Namen für Ihren fake-sp, mit einem INSERT - Trigger nach. Die dedizierten Tabellenzeilen enthalten die Parameter für Ihre gefälschte SP. Wenn Ergebnisse zurückgegeben werden müssen, können Sie eine zweite (möglicherweise temporäre) Tabelle (mit dem Namen der gefälschten SP) verwenden, um diese Ergebnisse zu enthalten. Es wären zwei Abfragen erforderlich: erstens Daten in die Fake-SP-Trigger-Tabelle EINFÜGEN und zweitens SELECT aus der Fake-SP-Ergebnistabelle, die leer sein könnte, oder ein Nachrichtenfeld haben, wenn etwas schief geht .