IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Insérer la date courante par procédures stockées


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut Insérer la date courante par procédures stockées
    Bonjour à tous,
    J'ai crée une procédure stockée(avec paramètres par défaut) par laquelle, je voudrais insérer et sélectionner l'heure courante. Voici le code de création de la procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ALTER PROCEDURE [dbo].[PS_CONTRAT]
        --LES PARAMETRES D ENTREES
    		 @NumeroOrdre	INT=0,
    		 @IDPROPRIETAIRE INT=10,
    		 @IDAPPARTEMENT INT=1002, 
    		 @IDCONTRAT INT=100,
    		 @TYPECONTRAT varchar(20)='Location',
    		 @DATECONTRAT DATETIME=NOW
     
    AS
     
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
     
       IF @NumeroOrdre=0
    		BEGIN		
    		  SELECT TOP 5 * FROM CONTRAT   
    		END
       ELSE
     
       IF @NumeroOrdre=1
         	BEGIN		
    		  INSERT INTO CONTRAT(IDPROPRIETAIRE,IDAPPARTEMENT,IDCONTRAT,TYPECONTRAT,DATECONTRAT)
    		   VALUES (@IDPROPRIETAIRE,@IDAPPARTEMENT,@IDCONTRAT,@TYPECONTRAT,@DATECONTRAT)
    	END
    Le problème est qu'à l’exécution le passage des paramètres est toujours avec heurts.
    Voici mon code d’exécution de la procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    EXEC PS_CONTRAT @NumeroOrdre =1,
    				@IDPROPRIETAIRE =10,
    				@IDAPPARTEMENT=1005,
    				@IDCONTRAT=100, 
    				@TYPECONTRAT ='Location',
    				@DATECONTRAT =GETDATE()
    OU ENCORE
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    EXEC PS_CONTRAT @NumeroOrdre =1,
    				@IDPROPRIETAIRE =10,
    				@IDAPPARTEMENT=1005,
    				@IDCONTRAT=100, 
    				@TYPECONTRAT ='Location',
    				@DATECONTRAT =NOW
    aucune des 2 exécutions ne marchent.
    Où ai je fais l'erreur? Merci de m'aider.
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    NOW n'existe pas en SQL SERVER.... il faut en effet utiliser GETDATE()
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    ... ou aller ... soyons fous et utilisons CURRENT_TIMESTAMP

    ++

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bonsoir,

    J'ai déjà essayé cette solution, et là getdate() est souligné de rouge. Je rappelle que la colonne IDCONTRAT de la table recueillant la valeur de la variable @IDCONTRAT est une colonne en Auto-incrément. La preuve en image avec deux cas de figures.
    Avec CURRENT_TIMESTAMP, même constat, Le problème demeure. Aidez moi à trouver la solution.
    Images attachées Images attachées    
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  5. #5
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    J'avais pas vu que tu voulais mettre cette valeur par défaut en paramètre de procédure stockée.

    Dans ton cas le problème est normal. En effet, la valeur par défaut d'un paramètre d'une procédure stockée doit être constant. Hors les fonctions GETDATE() ou CURRENT_TIMESTAMP ne sont pas constants par nature.

    Dans ton cas tu peux faire comme cela par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ALTER PROCEDURE [dbo].[PS_CONTRAT]
        --LES PARAMETRES D ENTREES
    		 @NumeroOrdre	INT=0,
    		 @IDPROPRIETAIRE INT=10,
    		 @IDAPPARTEMENT INT=1002, 
    		 @IDCONTRAT INT=100,
    		 @TYPECONTRAT varchar(20)='Location',
    		 @DATECONTRAT DATETIME=null
    AS
     
    DECLARE @date_contrat DATETIME = COALESCE(@DATECONTRAT, GETDATE());
     
    ...
    ++

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2008, 19h44
  2. Réponses: 0
    Dernier message: 05/12/2007, 17h22
  3. Renvois Identifiant ligne par procédure stockée
    Par MAXIPAT dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/02/2007, 09h21
  4. [C#]Passage d'un parametre date a une procédure stocké
    Par frans2111 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/08/2006, 23h07
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo