Konstruowanie kursora - procedura T-SQL

0

Witam.
Mam takie zadanie:

Napisz procedurę składowaną, która zwróci osoby starsze od wieku zadanego parametrem procedury.

Oto kod, który wykombinowałem:

 ALTER PROCEDURE starsze_niz(@wiek int)
AS BEGIN
	DECLARE @wiek_emp int, @hir datetime
	DECLARE kursor CURSOR FOR select HIREDATE FROM EMP
	OPEN kursor
		WHILE @@FETCH_STATUS = 0
		BEGIN
			FETCH NEXT FROM kursor into @hir 
			SET @wiek_emp = (SELECT YEAR(GETDATE()) - YEAR(@hir) FROM EMP where HIREDATE = @hir)
			IF @hir > @wiek_emp
			BEGIN
				print @hir
			END
		END
	CLOSE kursor
	DEALLOCATE kursor
END

Rezultat tego kodu oraz fragment tabeli EMP macie w załącznikach.
Problem polega na tym, że nie za bardzo kumam jak skonstruować ten konstruktor, aby wyświetlić Empno, Ename oraz hiredate. Drugie pytanie czy ta procedura jest dobrze zrobiona.

3

A po co tu kursor i print? Jak dla mnie zwrócić dane oznacza zwrócić wynik zapytania select, a nie wypisać je na ekranie...

1
Create Procedure starsze_niz(@wiek INT)
As
Begin   Select *
          From Nazwa_Tabeli
          Where YEAR(HIREDATE) > @wiek
End

Pisane z głowy więc mogą być błędy jednak powinieneś pójść w tym kierunku.


0

Napisałem tak:

ALTER PROCEDURE starsze_niz(@wiek int)
AS BEGIN
	SELECT * FROM EMP WHERE YEAR(GETDATE()) - YEAR(HIREDATE) > @wiek
END

Dzięki wam za pomoc. Nie wiem po jaką cholerę kombinowałem z kursorem...

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