Ich habe versucht, einen Standardparameterwert folgendermaßen zu ändern:
ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()
und alles, was der SQL-Pre-Compiler mir gab, war dieser Fehler:
Meldung 102, Ebene 15, Status 1, Prozedur my_sp, Zeile 8 Falsche Syntax in der Nähe von '('.
Ich habe die Prozedur bereits erstellt. (Ich bin nicht sicher, ob das relevant ist.) Ich habe einen Standardwert von Null verwendet und später danach gesucht, aber das scheint nicht richtig zu sein. Kann ich das in einer Zeile machen?
Update: Ich habe die MSDN-Beschreibung der Parameter für gespeicherte Prozeduren verlassen :
[= Standard] Ist ein Standardwert für den Parameter. Wenn ein Standardwert definiert ist, kann die Funktion ausgeführt werden, ohne einen Wert für diesen Parameter anzugeben.
Hinweis:
Für CLR-Funktionen können Standardparameterwerte angegeben werden, mit Ausnahme der Datentypen varchar (max) und varbinary (max).Wenn ein Parameter der Funktion einen Standardwert hat, muss beim Aufruf der Funktion das Schlüsselwort DEFAULT angegeben werden, um den Standardwert abzurufen. Dieses Verhalten unterscheidet sich von der Verwendung von Parametern mit Standardwerten in gespeicherten Prozeduren, bei denen das Weglassen des Parameters auch den Standardwert impliziert.
Lese ich das falsch
Danke vielmals.
quelle
Ich denke nicht, dass das möglich ist, Sie müssen einen Literalwert (Konstantenwert) als Standard verwenden.
Sie können dies jedoch tun:
quelle
Sie können Folgendes versuchen:
quelle
Ich schließe aus den eckigen Klammern in Ihrem Beispiel, dass Sie Microsoft SQL Server verwenden.
Von MSDN :
Die Funktion
GETDATE()
gibt von Zeit zu Zeit einen anderen Wert zurück, sodass es sich nicht um einen konstanten Ausdruck handelt.quelle
Dieser Wert ist nicht deterministisch und kann nicht verwendet werden
quelle
Vorschlag:
Setzen Sie die Standardeinstellung auf
NULL
Machen Sie den Standard
GETDATE()
im Frontend.quelle