Instrukcja administratora > Parametryzacja systemu > Obiekty użytkownika > Funkcje i procedury użytkownika

Drukuj

Funkcje i procedury użytkownika

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.

181561

Dla nowej funkcji lub procedury b_ins 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

Bardzej rozbudowany przykład wykorzystania funkcji w połączeniu z wyzwalaczami użytkownika jest dostępny tutaj