Postaram się Wam to wytłumaczyć na przykładzie kodu mojej funkcji :
CREATE FUNCTION czlonek_projekty_id(@id int) returns @TABLE TABLE (c_id int,c_nazwisko varchar(30),c_imie varchar(20), c_status varchar(20),c_region varchar(20),p_id int, p_nazwa varchar(50),p_rok int, p_status varchar(12), funk varchar(20)) AS begin declare @pid TABLE (id int) INSERT @pid SELECT t_p_id FROM team WHERE (t_marketing=@id OR t_pr=@id OR t_koordynator=@id OR t_efar=@id OR t_inne1=@id OR t_inne2=@id) INSERT @TABLE SELECT 'id czlonka'=c.c_id,'nazwisko'=c.c_nazwisko,'imie'=c.c_imie, 'status w organizacji'=c.c_status,'region'=c.c_region,'id projektu'=t.t_p_id, 'nazwa projektu'=p.p_nazwa,'rok'=p.p_rok,'status projektu'=p.p_status ,'funkcja w zespole'=dbo.funkcja_team(t.t_p_id,@id) FROM czlonkowie c,team t,(SELECT p_nazwa,p_rok,p_status FROM projekty WHERE p_id=(SELECT id FROM @pid))p WHERE c_id=@id AND t_p_id=(SELECT id FROM @pid ) RETURN end go
w tabeli @pid znajdują się identyfikatory t_p_id = p_id znalezione automatycznie w tabeli team.
Funkcja ma za zadanie wypisać z 3 tabel pola, dla których wartości z tabeli @pid oraz wartość @id się zgadzają , funkcja działa prawidłowo dopóki w tabeli @pid jest jedna wart. Jeżeli jest więcej przy wykonywaniu otrzymuje następujący komunikat :
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
funkcja_team() nie jest źródłem błędu !
Z góry dzięki za pomoc