Sintassi errata vicino a ')' che richiama la procedura memorizzata con GETDATE
-
25-09-2019 - |
Domanda
Forse sto avendo un momento di 'pomeriggio', ma qualcuno può spiegarmi perché mi capita
Msg 102, Livello 15, Stato 1, Linea 2
Sintassi errata vicino a ')'.
Durante la corsa
CREATE PROC DisplayDate
(@DateVar DATETIME)
AS
BEGIN
SELECT @DateVar
END
GO
EXEC DisplayDate GETDATE();
Soluzione
Non è possibile passare in una chiamata di funzione come argomento per la stored procedure. Invece di utilizzare una variabile intermedia:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Altri suggerimenti
COME Mitch Grano menzionato che non puoi passare una funzione.
Se nel tuo caso dovresti passare un valore precalcolato o GETDATE(), puoi utilizzare il valore predefinito.Ad esempio, modifica la procedura memorizzata:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
E poi prova:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Osservazione:Qui suppongo che il valore NULL non sia in uso per questo parametro.Se non è il tuo caso, puoi utilizzare un altro valore inutilizzato, ad esempio '1900-01-01 00:00:00.000'