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 :

Alis - Nbre de préfixe


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 183
    Points : 66
    Points
    66
    Par défaut Alis - Nbre de préfixe
    Bonjour,

    Dans un curseur j'utilise une requête que voici:

    EXEC ('UPDATE ORUSFRE.Optimaint.dbo.EQUIPEMENTS
    SET ORUSFRE.Optimaint.dbo.EQUIPEMENTS.EQU_ORGANE_OBLIG=1,
    ORUSFRE.Optimaint.dbo.EQUIPEMENTS..EQU_DESIGNATION=(SELECT immatriculation FROM vehicule WHERE num_parc='''+@EQU_EQUIPEMENT+''')WHERE ORUSFRE.Optimaint.dbo.EQUIPEMENTS.EQU_EQUIPEMENT='''+@EQU_EQUIPEMENT+'''')


    Lors de l'exécution de la requête, il me dit que:

    Serveur*: Msg 117, Niveau 15, État 2, Ligne 4
    Le nombre de préfixes dans le nom de nombre 'OGRAVILL.Optimaint.dbo.EQUIPEMENTS' est supérieur au maximum autorisé, 3.

    Meme en mettant en alias:

    EXEC ('UPDATE ORUSFRE.Optimaint.dbo.EQUIPEMENTS EQ
    SET EQ.EQU_ORGANE_OBLIG=1,
    EQ.EQU_DESIGNATION=(SELECT immatriculation FROM vehicule WHERE num_parc='''+@EQU_EQUIPEMENT+''')
    WHERE EQ.EQU_EQUIPEMENT='''+@EQU_EQUIPEMENT+'''')


    il m'indique Ligne 1 : syntaxe incorrecte vers 'EQ'.
    Je crois que les alias ne peuvent pas être utiliser de cette façon dans les clauses update.

    Si quelqu'un peut m'indiquer comment faire.

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    La norme SQL dit "pas d'alias dans 1 clause update".
    Pas de chance pour toi ton moteur respecte la norme (et en plus il doit être 1 des seuls!). Des fois c'est rageant.

    Citation Envoyé par zut94
    ORUSFRE.Optimaint.dbo.EQUIPEMENTS..EQU_DESIGNATION
    Dis-moi, les 2 points apres EQUIPEMENTS c'est normal ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    c juste une erreur de frappe mais ca change rien au pb.

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,
    Citation Envoyé par zut94
    c juste une erreur de frappe mais ca change rien au pb.
    Dommage.
    As-tu essayé d'enlever la qualification de tes champs. Comme tu n'as qu'1 seule table il n'y a pas d'ambiguité possible ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    comment ca la qualification de mes champs?

    je dois mettre à jour de cette facon 6 champs.

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pas de renom dans la clause Update !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ORUSFRE.Optimaint.dbo.EQUIPEMENTS
    	SET EQU_ORGANE_OBLIG=1, 
    	EQU_DESIGNATION=(SELECT immatriculation 
    		    FROM vehicule 
    		    WHERE num_parc=@EQU_EQUIPEMENT) 
    WHERE EQU_EQUIPEMENT=@EQU_EQUIPEMENT

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  7. #7
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Oui Comme ça
    Citation Envoyé par WOLO Laurent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ORUSFRE.Optimaint.dbo.EQUIPEMENTS
    	SET EQU_ORGANE_OBLIG=1, 
    	EQU_DESIGNATION=(SELECT immatriculation 
    		    FROM vehicule 
    		    WHERE num_parc=@EQU_EQUIPEMENT) 
    WHERE EQU_EQUIPEMENT=@EQU_EQUIPEMENT
    Merci Laurent ;-) (j'étais 1 peu à la bourre pour répondre là !)
    Tu ne mets à jour qu'1 seule table, il n'y a pas d'ambiguité possible sur le nom des champs. Tu n'as pas besoin de les rendre uniques en les qualifiant avec hote.base.propriétaire.

  8. #8
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Comme ça, ce sera un peu plus propre (au T-SQL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ORUSFRE.Optimaint.dbo.EQUIPEMENTS
    SET E.EQU_ORGANE_OBLIG=1,
        E.EQU_DESIGNATION=v. immatriculation
    FROM ORUSFRE.Optimaint.dbo.EQUIPEMENTS E INNER JOIN vehicule V 
        ON V.num_parc = E.EQU_EQUIPEMENT
    WHERE E.EQU_EQUIPEMENT=@EQU_EQUIPEMENT
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  9. #9
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    merci ca fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb nbre ligne
    Par semaj_james dans le forum Bases de données
    Réponses: 5
    Dernier message: 07/06/2004, 10h34
  2. [DOM] ajouter le préfixe <?xml-stylesheet>
    Par phoebe dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 29/03/2004, 11h37
  3. Réponses: 2
    Dernier message: 23/03/2004, 11h24
  4. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  5. Préfixe REP
    Par M.Dlb dans le forum Assembleur
    Réponses: 3
    Dernier message: 02/08/2002, 10h08

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