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();
È stato utile?

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'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top