Witam.
Oto treść zadania:
Napisz procedurę dopisującą nowego gościa. Jeśli gość o takim imieniu oraz nazwisku już istnieje, nie wprowadzaj danych.
Oto mój kod:
ALTER PROCEDURE dodaj_goscia (@Imie varchar(30), @Nazwisko varchar(30), @Procent_rabatu int)
AS BEGIN
DECLARE @id int
select @id = max(IdGosc)+1 from Gosc
DECLARE @im varchar(30), @nazw varchar(30)
DECLARE kursor CURSOR FOR
SELECT Imie, Nazwisko FROM Gosc
Open kursor
FETCH NEXT FROM kursor INTO @im, @nazw;
WHILE @@FETCH_STATUS=0
BEGIN
IF @im = @Imie and @nazw = @Nazwisko
PRINT 'Taka osoba już istnieje!'
ELSE
INSERT INTO GOSC(IdGosc, Imie, Nazwisko, Procent_rabatu)
VALUES(@id, @Imie, @Nazwisko, @Procent_rabatu)
PRINT 'Dodano osobę! '+@Imie+' '+ @Nazwisko
END
Close kursor
Deallocate kursor
END
Problem polega na tym, gdy wywołuje procedurę:
exec dodaj_goscia 'Paweł', 'Lenkiewicz', 30
to tworzy się zapętlenie i wyskakuje takie coś jak w drugim załączniku.