Je veux savoir pourquoi je ne peux pas définir la valeur par défaut sur le paramètre SP DateTime à getDate () comme ci-dessous: si j'essaie de sauvegarder une erreur de compilateur < / p> EDIT: strong>
Je sais que je peux le faire comme ci-dessous p>
5 Réponses :
Vous ne pouvez pas utiliser d'appel de fonction comme valeur de paramètre par défaut. p>
Il est facile de travailler autour: définissez votre paramètre d'appel sur getDate () code> si non défini. P>
Pourquoi je ne peux pas l'utiliser .. N'est-il pas facile de faire le moteur SQL?
Y a-t-il une explication pourquoi il ne peut pas accepter cela .. ou c'est une règle SQL Server qui ne peut pas appeler la fonction sous forme de paramètre par défaut
Ce doit être une valeur constante.
@Spacecracker La raison pour laquelle je crois est que ce que vous feriez (s'il vous suffirait de vous permettre) est d'exécuter la fonction getDate () au moment où votre code a été compilé (gardez à l'esprit que nous compilons le code) et stockons le Résultat de cette exécution de getDate () comme valeur par défaut ... quelque chose que vous ne voulez pas. Ce que vous voulez, c'est pour qu'il exécute la fonction getDate à tout moment, votre fonction de monilog est appelée, qui devrait / peut-être effectuée uniquement dans le corps de la fonction.
En termes simples, il doit être une valeur constante et getDate () est un appel de fonction. P>
Si vous souhaitez utiliser le @Created comme étant par défaut, définissez NULL comme valeur de paramètre par défaut et définissez le paramètre @Created avec getDate () s'il est livré avec NULL dans votre sp.
... @CreateDate datetime = null ) AS if @CreateDate is null set @CreateDate = getdate() ...
Vous ne pouvez pas utiliser une fonction de paramètre. Ce que je fais, c'est que j'ai défini le paramètre à une date hors de portée comme "1900-01-01", puis je le vérifie dans la proc. Par exemple:
COALESCE(@CreateDate, getdate())