to nie szkoła, tylko rozmowa o pracę ;)
dzięki Haskell, sporo rozjasniłeś. powiedz mi tylko, jakie funkcja może przyjmować parametry wejściowe i wyjściowe? te parametry @z i @lista to przykladowe nazwy, nie muszą się znajdować w tabeli jako nazwy kolumn? i dlaczego czasami w środku funkcji są deklaracje (declare)? np taka funkcja
CREATE FUNCTION lala (@id INT)
RETURNS INT
BEGIN
declare @nr INT
set @nr = (SELECT MAX(IDPrac) FROM pracownik WHERE IdDzialu=@ID)
RETURN @nr
END
albo czasami jest BEGIN i END, a czasami jak w tej poprzedniej funkcji nie ma?
a tak poza tym, co do tej funkcji z zarobkami powyzej 5 tys. jaki jest cel pisania takiej funkcji? nie latwiej napisac polecenie select, from, where zarobki > 5000 ?;)
Funkcja może przyjmować dowolne parametry, podobnie może dowolne zwracać. Jedyne ograniczenie to takie, że może zwracać jedną wartość i nazywa się wtedy funkcją skalarną, lub może zwracać tabelę (resultset) i wtedy jest nazywana funkcją tabelaryczną (table-valued function). Nazwy parametrów są dowolne i nie muszą w żaden sposób pokrywać się z nazwami kolumn. Nazwy powinny programiście coś mówić na temat tego, co znajduje się w danym parametrze. Jeżeli w ciele funkcji jest DECLARE to znaczy, że twórca uznał, że do wykonania obliczeń jest potrzebna dodatkowa zmienna i dlatego ją zadeklarował, a później użył. BEGIN, END jest konieczne wtedy gdy funkcja potrzebuje kilku operacji, żeby ostatecznie zwrócić wynik, tak aby było wiadomo gdzie ciało funkcji się zaczyna, a gdzie się kończy. Przykładowo jeżeli najpierw programista zadeklarował zmienną, a później zrobił SELECT, to już musi umieścić kod w bloku BEGIN-END. Jeżeli ciało funkcji składa się wyłącznie z jednej operacji (np. sam SELECT), to BEGIN-END jest nieobowiązkowe i dlatego w poprzedniej funkcji go nie było.
Celem istnienia funkcji (widoków i procedur również) jest to, że kod umieszczony w jej ciele jest zapisywany w bazie danych pod określoną nazwą (nazwą funkcji) i można go użyć wielokrotnie w przyszłości, bez konieczności każdorazowego pisania zapytania, wystarczy tylko znać nazwę tej funkcji. Dodatkowo do funkcji można przydzielić uprawnienia i dać możliwość jej wykonywania tylko określonym użytkownikom. MSSQL dodatkowo może sobie zapisywać w bazie plan zapytania dla takiej funkcji, dzięki czemu funkcja w przyszłości będzie się wykonywała szybciej, niż zapytania napisane z palca.