Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

GETDATE() in Parameter einer Gespeicherten Prozedur

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von zachy, 23 November 2015.

  1. zachy

    zachy Aktiver Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. CREATE PROCEDURE usp_Alle_Bestellungen
    (
    @jahr int = YEAR(GETDATE())
    )
    die Variablen werden geklammert.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden