processo di SQL e datetime parametro
-
01-10-2019 - |
Domanda
Un altro sviluppatore ha creato una stored procedure che è impostato per essere eseguito come un processo SQL ogni mese. Ci vuole un parametro di datetime. Quando provo ad invocarlo nel lavoro o in solo una finestra di query ottengo un Incorrect syntax near ')'
errore. La chiamata a eseguirlo è:
exec CreateHeardOfUsRecord getdate()
Quando do una data di hard coded come exec CreateHeardOfUsRecord '4/1/2010'
funziona benissimo. Qualsiasi idea perché non posso usare getdate()
in questo contesto? Grazie.
Soluzione
parametri passati con Exec devono essere sia costanti o variabili . GetDate () è classificato come una funzione. È necessario dichiarare una variabile per contenere il risultato di GetDate (), poi passarlo alla stored procedure.
Il valore fornito deve essere una costante o una variabile; Non è possibile specificare un nome della funzione come valore di parametro. Le variabili possono essere definite dall'utente o variabili di sistema come ad esempio @@ SPID.
Altri suggerimenti
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
si può passare solo in un valore costante o una variabile o la clausola DEFAULT
provarlo:
create procedure xy_t
@p datetime
as
select @p
go
exec xy_t GETDATE()
uscita:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
Prova a passare Convert (varchar, GetDate (), 101)
Utilizzando il codice di Km: ecco un modo per farlo
create procedure xy_t
@p datetime
as
select @p
go
declare @date datetime
set @date = getdate()
exec xy_t @date