Ich versuche, eine gespeicherte Prozedur basierend auf einer Abfrage zu erstellen, die ich mit vordefinierten Parametern schrieb.Gespeicherte Prozedur mit Standardparametern
Bei der Umstrukturierung in eine erstellte gespeicherte Prozedur und ich die gespeicherte Prozedur ausführen besagt, dass die Parameter nicht angegeben wurden. Kann mir jemand sagen warum?
Ich weiß, dass ich etwas Wesentliches verpasst habe, aber nachdem ich mit dem Code herumgespielt habe, habe ich den Punkt erreicht, dass ich Hilfe von Experten brauche.
Dies ist mein Code (verkürzt):
Alter Procedure [Test]
@StartDate AS varchar(6),
@EndDate AS varchar(6)
AS
Set @StartDate = '201620' --Define start YearWeek
Set @EndDate = (SELECT CAST(DATEPART(YEAR,getdate()) AS varchar(4)) + CAST(DATEPART(WEEK,getdate())-1 AS varchar(2)))
SELECT
*
FROM
(SELECT DISTINCT
[YEAR], [WeekOfYear]
FROM
[dbo].[DimDate]
WHERE
[Year] + [WeekOfYear] BETWEEN @StartDate AND @EndDate) dimd
LEFT JOIN
[Schema].[Table1] qad ON (qad.[Year] + qad.[Week of the Year]) = (dimd.[Year] + dimd.WeekOfYear)
Wenn ich die Prozedur ausführen, erhalte ich:
Msg 201, Ebene 16, Status 4, Verfahrensprüfung, Zeile 0
Verfahren oder die Funktion 'test' erwartet den Parameter '@StartDate', der nicht geliefert wurde.
Vielen Dank im Voraus.
Warum fragen Sie nach '@ StartDate' und' @ EndDate' als Parameter, wenn Sie sie in Ihrem tsql setzen? deklariere sie einfach in der t-sql und es sollte gut laufen – jellz77
Wenn diese Parameter 'StartDate' und' EndDate' heißen - *** warum auf EARTH *** sind sie vom Typ 'varchar (6)' ?? Du solltest * immer * den geeignetsten Datentyp verwenden - und eine Zeichenkette ist definitiv nicht die beste Wahl für ein ** Datum ** - benutze 'DATE' oder' DATETIME2 (n) 'für irgendwas Datumsbezogenes! –
Ihr Titel bezieht sich auf Standardeinstellungen, Sie geben jedoch keine an. Sie könnten den Deklarationen '= null 'hinzufügen, um ihnen die Standardwerte zu geben, und dann wäre es möglich,' exec 'auszuführen, ohne sie zu übergeben. Bestehende Antworten weisen bereits auf einige andere Korrekturen hin. – shawnt00