Do czego są wykorzystywane języki rozszerzające SQL takie jak PL/sql, PL/pgSQL? Jakie problemy one rozwiązują(automatyzują?)?
języki rozszerzające SQL takie jak PL/sql, PL/pgSQL
- Rejestracja: dni
- Ostatnio: dni
- Postów: 14
Służą one do programowania procedur składowanych. Dzięki nim możesz przenieść część obliczeń na serwer bazodanowy, np. jeżeli masz kilka aplikacji podpiętych od jednej bazy możesz nimi zaprogramować wspólne procedury.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6823
Pozwalają na tworzenie własnych procedur i funkcji. Przykładowo można napisać funkcję, która będzie formatować numer NIP przed wstawieniem go do bazy. Można za ich pomocą przenieść część logiki do bazy co czasami ma sens(np. gdy zaprogramowanie tego w normalnych językach jak Java czy php było by upierdliwe).
- Rejestracja: dni
- Ostatnio: dni
- Postów: 227
Czy takie programy działają tylko na dane wchodzące do bazy danych? Czy pisze się takie, które działają na już zebranych danych w bazie?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 57
Do jakieś kontrolki napisanej w danym języku możesz podpiąć wykonanie pewnej procedury która zmodyfikuje pewne dane znajdujące się już w bazie danych. Dodatkowo możesz wykorzystać triggery które umożliwią Ci wykonanie pewnej czynności w przypadku dodania/zmodyfikowania/usunięcia pewnych danych (np. usuwasz pewne dane z bazy a przy za pomocą triggera usuwasz powiązania z tą daną). Poprzez funkcje możesz wykonać skomplikowane obliczenia na bazie - np. przeliczanie pewnych statystyk.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6823
Na dane wchodzące, istniejące jak i zewnętrzne (dzieci nie róbcie tego w domu). Przykładowo:
Dane istniejące (aktualizacja wszystkich wartości np. nowe formatowanie):
Update my_table set my_field = my_procedure(my_field);
Dane wchodzące (formatowanie danych wchodzących):
insert into my_table (my_field) values(my_procedure(some_value));
Dane zewnętrzne (składania działa z tabelą DUAL):
Select my_procedure() from DUAL
Gdzie my_procedure woła sobie np. REST-owy serwis za pomocą jakiejś dodatkowej biblioteki.