Hallo!
Ich hab eine Funktion, in der irgendwas mit den Cursors nicht zu stimmen scheint. Sobald man die Funktion aufruft kommt die Fehlermeldung „Ein Cursor mit dem Namen ‚cur_skb‘ ist nicht vorhanden.“ …ich sch*** jetzt schon den halben Vormittag damit herum und komm einfach nicht weiter!
Hier der Code:
ALTER FUNCTION dbo._SOURCE_test (@nutzung nvarchar(50), @date datetime)
RETURNS integer
AS
BEGIN
DECLARE @anz integer
if(@nutzung = ‚Eigennutzung SKB‘)
begin
declare cur_skb cursor for
SELECT COUNT(ObjektID) AS EigennutzungAnzahl
FROM dbo.Mietobjekte
GROUP BY EigennutzungSKB
HAVING (EigennutzungSKB 0)
OPEN cur_skb
FETCH NEXT FROM cur_skb INTO @anz
CLOSE cur_skb
DEALLOCATE cur_skb
end
else
if(@nutzung=‚Leerstehung‘)
begin
declare cur_skb cursor for
SELECT COUNT(ObjektID) AS LeerstehungenAnzahl
FROM dbo.Mietobjekte
WHERE (EigennutzungSKB = 0) AND (NOT (ObjektID IN (SELECT DISTINCT ObjektID FROM Vermietungen))) OR
(ObjektID IN (SELECT ObjektID FROM Vermietungen WHERE BisDatum = @date)))
OPEN cur_skb
FETCH NEXT FROM cur_skb INTO @anz
CLOSE cur_skb
DEALLOCATE cur_skb
end
else
declare cur_skb cursor for
SELECT COUNT(dbo.Vermietungen.NutzungID)
FROM dbo.Vermietungen INNER JOIN dbo.Nutzung ON dbo.Nutzung.NutzungID = dbo.Vermietungen.NutzungID
WHERE (BisDatum IS NULL OR BisDatum >= @date)
AND Nutzung = @nutzung
OPEN cur_skb
FETCH NEXT FROM cur_skb INTO @anz
CLOSE cur_skb
DEALLOCATE cur_skb
RETURN (@anz)
END