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

MS SQL Server Discussion :

stockage variable avec sql


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut stockage variable avec sql
    Bonjour, j'ai deux questions,

    la première : comment peut-on stocker des variables avec le langage sql ? J'utilise SQL server et concrètement j'aimerais faire quelque chose comme la requête ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     date_der_modif_mdp, login, DATEDIFF([day], date_der_modif_mdp, { fn NOW() }) AS [nombre de jours], CASE DATEDIFF([day], date_der_modif_mdp,
                          { fn NOW() }) WHEN 33 THEN "on stocke le code d'accès dans une variable" ELSE "on ne fait rien" END AS result
    FROM         Table A

    et ensuite est il possible d'utiliser la variable qui stockerait le code d'accès dans un update avec une syntaxe comme celle ci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE    Table A
    SET              code_acces = ' ' and code_acces "ne doit pas être égale à la valeur de la variable contenant le dernier code d'acces du user"
    WHERE     (DATEDIFF([day], date_der_modif_mdp, { fn NOW() }) = 33)
    Je ne sais pas si je suis très clair, en gros j'ai réussi à faire un traitement visant à effacer le mdp d'un user si son mdp a plus de 33 jours, mais j'aimerais avec ça un contrôle qui permette qu'il ne ressaisisse pas le même mdp ...

  2. #2
    Membre expérimenté
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Par défaut
    Bonjour,

    Regardez ce lien

    Formez-vous en peu sur le langage SQL ici

    Ensuite j'ai écrit votre SQL dans un format qui est accepté par le moteur SQL Server. Attention, je ne comprends pas le besoin fonctionnel donc ce n'est peut-être pas du tout ce que vous voulez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DECLARE @code_acces varchar(50)
     
    SELECT
    	@code_acces = (CASE
    		WHEN DATEDIFF([day], date_der_modif_mdp,
    		GETDATE()) = 33 THEN code_acces
    	END)
    FROM [TABLE_A]
     
     
    UPDATE [TABLE_A]
    SET code_acces = ' '
    WHERE DATEDIFF([day], date_der_modif_mdp, GETDATE()) = 33
    AND code_acces <> @code_acces

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Merci beaucoup SQL_EVAN, cela m'a l'air très bien, par contre à ce niveau là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @code_acces = (CASE
    		WHEN DATEDIFF([day], date_der_modif_mdp,
    		GETDATE()) = 33 THEN code_acces
    	END)
    est ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @code_acces = (CASE [...]
    ne veut pas dire la meme chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [...]GETDATE()) = 33 THEN code_acces [...]
    ??

  4. #4
    Membre expérimenté
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Par défaut
    Non, ce qu'on fait la et d'assigner la valeur de code_acces en base à notre variable.

    En réalité cette requête ne marchera pas puisque il y aura plus qu'un résultat pour code_acces. Il faudra donc passer par une curseur ou les stocker d'abords dans une table temporaire.

Discussions similaires

  1. Création de variable avec SQL
    Par valesole dans le forum Débutez
    Réponses: 2
    Dernier message: 22/07/2013, 16h45
  2. Utiliser les macro variables avec sql
    Par Euseibus dans le forum Macro
    Réponses: 5
    Dernier message: 25/10/2007, 18h40
  3. Problème de variables avec SQL
    Par sabchris dans le forum SQL
    Réponses: 2
    Dernier message: 01/10/2007, 10h10
  4. Réponses: 1
    Dernier message: 14/04/2006, 11h02
  5. [MySQL] Encore un probleme de variables avec les requetes sql
    Par eown dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/04/2006, 11h01

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