Pourquoi nous ne pouvons pas définir la valeur par défaut de datetime paramètre dans une procédure stockée = getDate()?
Je veux savoir pourquoi je ne peux pas définir la valeur par défaut de SP datetime paramètre à la fonction getdate() comme ci-dessous :
Create PROCEDURE [dbo].[UPILog]
(
@UserID bigint,
@ActionID smallint,
@Details nvarchar(MAX) = null,
@Created datetime = getdate()
)
si j'essaie de le sauver, il va me donner une erreur de compilateur
Msg 102, Level 15, State 1, Procedure UPILog, Line XX
Incorrect syntax near '('.
EDIT :
Je sais que je peux le faire comme ci-dessous
Create PROCEDURE [dbo].[UPILog]
(
@UserID bigint,
@ActionID smallint,
@Details nvarchar(MAX) = null,
@Created datetime = null
)
AS
if @Created is null
SET @Created=getdate() ...
OriginalL'auteur Amr Badawy | 2010-06-19
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez utiliser le @Créé comme un défaut, puis définissez la valeur null comme valeur de paramètre par défaut et définissez @Créé paramètre avec la fonction getdate() si il est livré avec la valeur null dans votre sp.
OriginalL'auteur Emre Guldogan
Vous ne pouvez pas utiliser un appel de fonction comme valeur de paramètre par défaut.
Il est facile à contourner: réglez le paramètre à l'appel de
getdate()
si pas défini.Est il une explication pourquoi il ne peut pas accepter cela .. ou c'est juste que SQL SERVER règle qui ne peuvent pas appeler la fonction en tant que paramètre par défaut
il doit être une valeur constante.
je n'ai pas trouver ce que je cherche mais merci mitch
la raison pour laquelle je crois, c'est que ce que vous souhaitez faire (si c'était pour vous permettre) pour exécuter la fonction getdate() au moment de votre code a été compilé (gardez à l'esprit que nous sommes de la compilation de code) et de stocker le résultat de la course de la fonction getdate() comme valeur par défaut... quelque chose que vous ne voulez pas. Ce que vous voulez est pour exécuter la fonction getdate tout moment votre UPILog fonction est appelée, ce qui doit/peut-être fait seulement dans le corps de la fonction.
OriginalL'auteur Mitch Wheat
en termes plus simples, il doit être une constante de la valeur et de la fonction GetDate() est un appel de fonction.
OriginalL'auteur TheVillageIdiot
Vous ne pouvez pas utiliser une fonction comme valeur de paramètre. Ce que je fais c'est mettre le paramètre à certains hors de portée de la date comme "1900-01-01' et puis j'ai vérifier dans le proc. par exemple:
OriginalL'auteur Ilan