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.

¿Fue útil?

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

EXECUTE (Transact-SQL)

[ { 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 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top