Falsche Syntax nahe ‚)‘ mit GETDATE gespeicherte Prozedur aufrufen
-
25-09-2019 - |
Frage
Vielleicht habe ich einen Moment der ‚Nachmittag‘, aber kann jemand erklären, warum ich
erhaltenMsg 102, Level 15, Status 1, Zeile 2
Falsche Syntax nahe ')'.
Bei der Ausführung
CREATE PROC DisplayDate
(@DateVar DATETIME)
AS
BEGIN
SELECT @DateVar
END
GO
EXEC DisplayDate GETDATE();
Lösung
Sie können nicht in einem Funktionsaufruf als Argument an Ihre gespeicherte Prozedur übergeben. Verwenden Sie stattdessen eine Zwischengröße:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Andere Tipps
Mitch Wheat Sie erwähnt nicht eine Funktion übergeben können.
Wenn in Ihrem Fall, dass Sie in einem vorberechneten Wert oder GETDATE passieren sollten () - Sie können Standardwert verwenden. Ändern Sie beispielsweise Ihre gespeicherte Prozedur:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
Und dann versuchen:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Hinweis : Hier habe ich angenommen, dass NULL-Wert nicht in Gebrauch ist für diesen Parameter. Wenn es nicht der Fall ist - Sie einen anderen nicht verwendeten Wert, zum Beispiel verwenden können ‚1900-01-01 00: 00: 00.000‘