Intenté cambiar un valor de parámetro predeterminado con esto:
ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()
y todo lo que me dio el precompilador de SQL fue este error:
Msg 102, Nivel 15, Estado 1, Procedimiento my_sp, Línea 8 Sintaxis incorrecta cerca de '('.
Ya he creado el procedimiento. (No estoy seguro de si eso es relevante). Estaba usando un valor predeterminado nulo y comprobándolo más tarde, pero eso no parece correcto. ¿Puedo hacer esto en una línea?
Actualización: me estaba saliendo de la descripción de MSDN de los parámetros del procedimiento almacenado :
[= predeterminado] Es un valor predeterminado para el parámetro. Si se define un valor predeterminado, la función se puede ejecutar sin especificar un valor para ese parámetro.
Nota:
Se pueden especificar valores de parámetros predeterminados para funciones CLR excepto para los tipos de datos varchar (max) y varbinary (max).Cuando un parámetro de la función tiene un valor predeterminado, la palabra clave DEFAULT debe especificarse cuando se llama a la función para recuperar el valor predeterminado. Este comportamiento es diferente de usar parámetros con valores predeterminados en procedimientos almacenados en los que omitir el parámetro también implica el valor predeterminado.
¿Estoy leyendo esto mal?
Muchas gracias.
fuente
No creo que sea posible, tienes que usar un valor literal (constante) como predeterminado.
Sin embargo, puede hacer esto:
fuente
Puedes intentar lo siguiente:
fuente
Deduzco que está usando Microsoft SQL Server por los corchetes en su ejemplo.
Desde MSDN :
La función
GETDATE()
devuelve un valor diferente de vez en cuando, por lo que no es una expresión constante.fuente
Ese valor no es determinista y no se puede utilizar
fuente
Sugerencia:
Establecer el valor predeterminado en
NULL
Haga lo predeterminado
GETDATE()
en la interfaz.fuente