SQL funkcja skalarna

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

hej mam problem z utworzeniem funkcji skalarnej. Funkcja miałaby wyświetlać ile jest utworów w każdym programie.
W kazym programie jest 10 utworów. Programów jest 6 numery ID odpowiednio 1,2,3,4,5,6. Razem 60 utworów.
Funkcję zapisałam tak:

CREATE FUNCTION dbo.utwor_program (@progID int)
RETURNS INT
AS
BEGIN
DECLARE @utw INT
SELECT @utw= utwor_ID FROM Utwory WHERE Program_ID=@progID
RETURN @utw
END

Funkcja zwraca mi odpowiednią wartość dla ID=1 (10 utworów) lecz w przypadku już ID=2 pokazuje 20, ID=3 30 itd.
Czy ktoś wie co jest nie tak w kwerendzie?

LD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
0

zwracasz ID a nie liczbe utworow. Sql server widocznie laduje do zmiennej ostatni id z recordsetu

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1
Kopiuj
CREATE FUNCTION dbo.utwor_program (@progID int)
RETURNS INT        
AS
BEGIN
DECLARE @utw INT
SELECT  @utw= count(utwor_ID) FROM Utwory WHERE Program_ID=@progID
RETURN @utw
END
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

Dokonujesz konwersji z nvarchar do int, prawdopodobnie w polu miasto masz 'słupsk' i starasz przypisać go wartości int (@czy3), tak samo w ifie porównujesz inta do łańcucha znaków....

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

tak, już udało mi się na to wpaść dlatego usunęłam, dzięki ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.