Używanie procedury w funkcji

0
CREATE FUNCTION Wyplata_Pracownika_W_Miesiacu(@data date, @ID_Pracownika int)
returns table
as
return(
Select SUM(DATEDIFF(hour,A.Czas_Rozpoczecia,A.Czas_Zakończenia)) as Wyplata_Pracownika from Czas_pracy as A WHERE A.ID_Pracownika = ID_Pracownika AND MONTH(@data) = MONTH(A.Czas_Rozpoczecia)
)
go

create procedure Wyswietl_Wyplaty_W_Miesiacu(@data date)
as
EXEC Wyswietl_Wyplaty_W_Miesiacu data

go

Mam problem - jak w procedurze wyświetlić wypłaty dla wszystkich pracowników z tabeli używając funkcji?

create table Pracownicy (
ID_Pracownika int primary key not null,
Imie nvarchar (50) not null,
Nazwisko nvarchar (50) not null,
)
0

ale to się przecież mija z celem. Procedury i funkcje są po to aby coś wykonać (funkcje dodatkowo mogą zwrócić wynik) a nie po to, żeby coś wyświetlać. Od wyświetlania masz SELECT

0

Robię projekt na zaliczenie i w bazie ma być po kilka funkcji i procedur, nie mam koncepcji co mogę innego zrobić nimi.

0

tak myślałem. Jeśli to na zaliczenie to możesz napisać procedury, które

  1. dodają/zmieniają rekord - dla każdej tabeli lub grupy tabel piszesz procedurę, np. dla tabeli towary piszesz procedurę dodaj_towar(tu parametry towaru). W tej procedurze sprawdzasz czy dany towar już jest w bazie (np. po unikalnym symbolu, który nie jest ID) i jak jest to robisz UPDATE a jak nie ma to INSERT
  2. usuwają rekord - dla każdej tabeli piszesz procedurę, np. dla tabeli towary piszesz procedurę usun_towar(id) która usuwa rekord z bazy

funkcje możesz napisać np. liczącą cenę dla towaru i kontrahenta (np. z jakichś tabel z rabatami czy coś).

Jakbyś chociaż napisał co w tej bazie jest to by można coś wymyślić

0

No tak, zaliczenie. To wszystko wyjaśnia. Nie masz problemu do rozwiązania, tylko masz zrobić samo rozwiązanie :) Dlatego nie mogłeś się zdecydować co wewnątrz czego i tworzyłeś dziwoloągi :)

Najbardziej typowe będzie robić funkcje skalarne, np. średnia_z_ostatnich_miesięcy(pracownik, bież. miesiąc, liczba mies.) i procedury zwracające zestaw wierszy, np. średnie_dla_działu(dział).

1 użytkowników online, w tym zalogowanych: 0, gości: 1