Frage

Vielleicht habe ich einen Moment der ‚Nachmittag‘, aber kann jemand erklären, warum ich

erhalten
  

Msg 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();
War es hilfreich?

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‘

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top