|
Funkcje i procedury składowane budowane na podstawie składni SQL służą do zadawania skomplikowanych zapytań i zwracania wyników dowolnych obliczeń, które odwołują się do bazy danych programu. Za pomocą odpowiednio skonstruowanej funkcji można przekazać wynik obliczenia do definicji dowolnego składnika płacowego, a tam już go dalej obliczać posługując się algorytmami definiowania list płac. Procedurę składowaną można natomiast używać w wyzwalaczach użytkownika do przeprowadzania bardziej skomplikowanych operacji na bazie danych (update'owanie rekordów, itd.). Funkcje i procedury użytkownika mogą być przechowywane albo w bazie R2P_nazwa_bazy_Bin (ogólnej), lub w bazach R2P_nazwa_bazy_Dane_X i są kopiowane do bazy firmy przy jej zakładaniu. Zapytania do tabel w takich funkcjach są względne, tzn. nie odwołują się do tabel w konkretnej bazie danych, co ułatwia przenoszenie archiwów i uruchamianie takich funkcji na dowolnym serwerze SQL.
W celu utworzenia własnej funkcji lub procedury, wybieramy z menu Ustawienia pozycję Funkcje i procedury użytkownika.
Dla nowej funkcji lub procedury określamy:
Nazwa - unikalna nazwa funkcji lub procedury
Bin - czy funkcja lub procedura ma być przechowywana w bazie Bin, czy w bazie firmy (Dane_X) i analogicznie gdzie mają się odwoływać jej zapytania
Rodzaj - funkcja albo procedura
Funkcja - zawartość funkcji lub procedury; można tutaj używać znaczników <BIN> oraz dane_0, zwracające odpowiednio nazwę bazy Bin lub numer bazy firmy, który będzie zamieniany przy tworzeniu nowej firmy; dwuklik myszy na tym polu powoduje otwarcie okna wygodnego edytora zapytań SQL
Przycisk Test służy do sprawdzenia składni.
Funkcję wywołujemy później w definicji składnika korzystająz z funkcji sf_nazwa_funkcji(...).
Natomiast procedurę lub funkcję możemy użyć w wyzwalaczu użytkownika, bądź przy budowaniu własnego zestawienia SQL.
Przykład
Jeśli zdefiniujemy funkcję moja_funkcja jako:
CREATE function dbo.moja_funkcja (@n int)
returns float
as
begin
return @n*2
end
to w założeniu ma ona mnożyć przez dwa wartość zadanego jej parametru.
Jeśli teraz zdefiniujemy nowy_składnik jako:
sf_moja_funkcja(wz(nowy_składnik))
to rezultatem będzie mnożenie przez dwa wartości zadanej tegoż składnika