Odpowiedzi:
SQLite musiał poświęcić inne cechy, które niektórzy uważają za przydatne, takie jak wysoka współbieżność, precyzyjna kontrola dostępu, bogaty zestaw wbudowanych funkcji, procedury składowane , ezoteryczne funkcje języka SQL, rozszerzenia XML i / lub Java, tera lub skalowalność peta-bajtowa i tak dalej
Odpowiedź : NIE
Oto dlaczego ... Myślę, że kluczowym powodem przechowywania procs w bazie danych jest to, że wykonujesz kod SP w tym samym procesie co silnik SQL. Ma to sens w przypadku silników baz danych zaprojektowanych do pracy jako usługa połączona z siecią, ale SQLite wymaga znacznie mniej, ponieważ działa jako biblioteka DLL w procesie aplikacji, a nie w oddzielnym procesie silnika SQL. Dlatego bardziej sensowne jest zaimplementowanie całej logiki biznesowej, w tym kodu SP w języku hosta.
Możesz jednak rozszerzyć SQLite o własne funkcje zdefiniowane przez użytkownika w języku hosta (PHP, Python, Perl, C #, JavaScript , Ruby itp.). Następnie możesz użyć tych niestandardowych funkcji jako części dowolnego wyboru / aktualizacji / wstawiania / usuwania SQLite. Zrobiłem to w C # za pomocą SQLite DevArt do implementacji mieszania haseł.
Jeśli nadal jesteś zainteresowany, Chris Wolf wykonał prototypową implementację SQLite z procedurami przechowywanymi. Szczegóły można znaleźć na jego blogu: Dodawanie procedur przechowywanych do SQLite
Jednak możliwe jest, aby udawać pomocą dedykowanego tabelę o nazwie dla swojej fałszywej-SP, z PO wyzwalacz INSERT. Dedykowane wiersze tabeli zawierają parametry dla fałszywego sp, a jeśli trzeba zwrócić wyniki, możesz mieć drugą (ewentualnie temp) tabelę (z nazwą związaną z fałszywym sp), która zawiera te wyniki. Wymagałoby to dwóch zapytań: najpierw WSTAW dane do tabeli fałszywych sp-trigger, a następnie WYBIERZ z tabeli fałszywych sp-wyników, które mogą być puste lub mieć pole komunikatu, jeśli coś pójdzie nie tak .