Frage

Ein weiterer Entwickler erstellt eine gespeicherte Prozedur, die jeden Monat als SQL-Job ausgeführt wird eingerichtet. Es nimmt einen Parameter für Datum und Uhrzeit. Wenn ich versuche, es in den Job aufzurufen oder in nur einem Abfragefenster bekomme ich einen Fehler Incorrect syntax near ')'. Der Aufruf, es auszuführen ist:

exec CreateHeardOfUsRecord getdate()

Wenn ich ihm hart codierte Datum wie exec CreateHeardOfUsRecord '4/1/2010' gebe es funktioniert gut. Jede Idee, warum kann ich nicht getdate() in diesem Zusammenhang verwenden? Danke.

War es hilfreich?

Lösung

übergebenen Parameter mit Exec müssen entweder Konstanten oder Variablen sein . GetDate () wird als Funktion eingestuft. Sie müssen eine Variable deklarieren das Ergebnis GetDate () zu halten, dann gibt sie an die gespeicherte Prozedur.

  

Der angegebene Wert muss eine Konstante sein   oder eine Variable; Sie können nicht angeben, ein   Funktionsnamen als Parameterwert.   Variablen können vom Benutzer definiert werden oder   Systemvariablen wie @@ spid.

Andere Tipps

, indem Sie auf EXECUTE (Transact-SQL)

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }

Sie können nur in einem konstanten Wert übergeben oder eine Variable oder die Klausel DEFAULT

probieren Sie es aus:

create procedure xy_t
@p datetime
as
select @p
go

exec xy_t GETDATE()

Ausgabe:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

Versuchen Sie konvertieren vorbei (varchar, GetDate (), 101)

Mit Km Code hier ist ein Weg, es zu tun

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top