trabajo de SQL y de fecha y hora parámetro
-
01-10-2019 - |
Pregunta
Otro desarrollador crea un procedimiento almacenado que está configurado para funcionar como un trabajo SQL cada mes. Se toma un parámetro de fecha y hora. Cuando trato de invocarlo en el trabajo o en sólo una ventana de consulta me sale un error Incorrect syntax near ')'
. La llamada a ejecutar es:
exec CreateHeardOfUsRecord getdate()
Cuando se dio una fecha duro codificado como exec CreateHeardOfUsRecord '4/1/2010'
funciona bien. Cualquier idea de por qué no se puede utilizar getdate()
en este contexto? Gracias.
Solución
parámetros pasados ??con Exec deben ser constantes o variables . GetDate () se clasifica como una función. Es necesario declarar una variable para contener el resultado de GetDate (), y luego pasarlo al procedimiento almacenado.
El valor suministrado debe ser una constante o una variable; no se puede especificar una nombre de la función como un valor de parámetro. Las variables pueden ser definidos por el usuario o las variables del sistema tales como @@ SPID.
Otros consejos
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
Sólo puede pasar en un valor constante o una variable o la cláusula DEFAULT
probarlo:
create procedure xy_t
@p datetime
as
select @p
go
exec xy_t GETDATE()
salida:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
Trate de pasar Convert (varchar, GetDate (), 101)
El uso de código de Km que aquí hay una manera de hacerlo
create procedure xy_t
@p datetime
as
select @p
go
declare @date datetime
set @date = getdate()
exec xy_t @date