Wyciągnięcie z tabeli numeru na liscie oczekujących

0

Witam,
Mam napisaną procedurę, która ma wypisać którą zajmujemy pozycję na liście oczekujących przy rezerwacji książek. Problem w tym, że jeśli wykonuje selecty bez procedury, to wszystko jest ok. Natomiast gdy wywołuje procedurę dostaję taki komunikat:
Invalid column name 'xxx'.

 
ALTER PROCEDURE [dbo].[lista_oczekujacych]
	@user as varchar(50)
AS
BEGIN
	IF OBJECT_ID('tempdb..##Temp_rezerwacja') IS NOT NULL BEGIN DROP TABLE ##Temp_rezerwacja END
	SELECT ID_KSIAZKI, ID_USER, (DENSE_RANK() OVER (ORDER BY ID_KSIAZKI,DATA_REZERWACJI)) AS Numer into ##Temp_rezerwacja
	FROM REZERWACJE 
	exec ('SELECT TYTUL,Numer FROM ##Temp_rezerwacja JOIN KSIEGOZBIOR ON ID_KSIAZKI=NR_INWENTARZOWY
	 AND ID_USER=(SELECT PESEL FROM CZYTELNICY WHERE NAZWA_UZYTKOWNIKA= '+@user+')')
END
0
SELECT TYTUL,Numer FROM ##Temp_rezerwacja JOIN KSIEGOZBIOR ON ID_KSIAZKI=NR_INWENTARZOWY
     AND ID_USER=(SELECT PESEL FROM CZYTELNICY WHERE NAZWA_UZYTKOWNIKA= XXX)

Brak podwójnych apostrofów.

0

W którym miejscu?

0

Napisałem ci jak będzie dla bazy widoczne to zapytanie (dla parametru @user=XXX). Wtedy wygląda, jakbyś NAZWA_UZYTKOWNIKA porównywała do XXX.
Chyba będzie to wyglądać tak: (dawno nie pisałem w T-SQL-u)

EXEC ('SELECT TYTUL,Numer FROM ##Temp_rezerwacja JOIN KSIEGOZBIOR ON ID_KSIAZKI=NR_INWENTARZOWY
     AND ID_USER=(SELECT PESEL FROM CZYTELNICY WHERE NAZWA_UZYTKOWNIKA= ''+@USER+'')')

Poza tym nie podoba mi się, że przed tym EXEC nie ma żadnego średnika ani begina.

0

Dobra, działa. Mój błąd, źle Cię zrozumiałam. Dzięki za pomoc.

//Teraz okazuje się że moja procedura niestety nie wyświetla rekordów.

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