GETDATE() in Parameter einer Gespeicherten Prozedur

zachy

Aktiver Benutzer
Beiträge
35
Hallo Community,

ich habe folgende Frage: Ich möchte eine Prozedur schreiben, welche alle Bestellungen aus einem bestimmten Jahr abfragt. Der Gespeicherten Prozedur soll über einen Parameter das Jahr übergeben werden. Als Standardwert für den Parameter soll das aktuelle Jahr dienen.

Hier mein Versuch:
Code:
CREATE PROCEDURE usp_Alle_Bestellungen
    @jahr int = YEAR(GETDATE())
AS
SELECT
    k.knd_Kundenname, b.bst_Datum,
    a.art_Preis_VK * bd.bsd_Menge AS Umsatz
FROM tbl_Kunden AS k
INNER JOIN tbl_Bestellungen AS b
ON k.knd_ID = b.bst_Kunde_fi
INNER JOIN tbl_Bestelldetails AS bd
ON b.bst_ID = bd.bsd_bst_ID_fi
INNER JOIN tbl_Artikel AS a
ON bd.bsd_art_ID_fi = a.art_ID
WHERE YEAR(b.bst_Datum) = @jahr;

Leider erzeugt dieser Code folgenden Fehler:
Code:
Meldung 102, Ebene 15, Status 1, Prozedur usp_Alle_Bestellungen, Zeile 2

Falsche Syntax in der Nähe von '('.

Meldung 137, Ebene 15, Status 2, Prozedur usp_Alle_Bestellungen, Zeile 14

Die @jahr-Skalarvariable muss deklariert werden.

Wo liegt mein Fehler? YEAR(GETDATE()) funktioniert ja an sich. Wieso in der SP nicht?

Viele Grüße
zachy
 
Werbung:
Ich habe noch nicht mit Default Werten in SPs gearbeitet aber so wie ich das verstehe würdest du mit @jahr int = NULL die nicht-Existenz des Parameters erlauben und müsstest erst später sagen das falls NULL an die SP übergeben wird, year(getdate()) genommen werden soll.
 
Werbung:
Zurück
Oben