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 :

Determiner le prochain ID par une procedure stockée contenant une requete CTE


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    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 : 373
    Par défaut Determiner le prochain ID par une procedure stockée contenant une requete CTE
    Bonsoir à tous,
    Voici ma requête CTE qui me permet de déterminer le prochain ID de ma table,
    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
    WITH CTE as (
      SELECT 
        NUMERO_COLONNE = ROW_NUMBER() OVER (ORDER BY NUMERO),
        * 
      FROM commandes
    )
    SELECT
      [Previous Row].*,
      [Current Row].*,
      [Next Row].*
    FROM CTE [Current Row]
    LEFT JOIN CTE [Previous Row] ON 
      [Previous Row].NUMERO_COLONNE = [Current Row].NUMERO_COLONNE - 1
    LEFT JOIN CTE [Next Row] ON 
      [Next Row].NUMERO_COLONNE = [Current Row].NUMERO_COLONNE + 1
    WHERE
      [Current Row].numero = 1407
    Ici l'ID est le 1407.

    Je voudrais en faire une procédure stockée à laquelle je passerai le dernier ID inséré en paramètre '(ID de type int )pour afficher pour afficher le suivant. Je ne sais pas comment m'y prendre. Merci de m'aider.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Votre approche n'est pas très optimale (loin de là, même).

    Plutôt qu'une sp, vous pourriez définir une vue, ce serait plus souple (jointure et résultats par ensemble).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE VIEW vNextID
    AS 
    SELECT
    T.ID
    , Next.NID
    FROM tTable AS T
    OUTER APPLY (
    SELECT TOP(1)
    T2.ID
    FROM tTable AS T2
    WHERE T2.ID > T.ID
    ORDER BY T2.ASC
    ) Next(NID)
    Usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT NID FROM vNextID WHERE ID = 1407

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    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 : 373
    Par défaut
    Merci pour la réponse , mais cette partie pose probleme:. visiblement T2 n'est pas le nom d'une colonne, mais plutôt une table. Et ça ne marche pas.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Alexandre le Grand Voir le message
    Merci pour la réponse , mais cette partie pose probleme:. visiblement T2 n'est pas le nom d'une colonne, mais plutôt une table. Et ça ne marche pas.
    Vous avez raison, c'est une typo, il s'agit de "T2.ID ASC" et non "T2.ASC".

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    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 : 373
    Par défaut
    Merci à vous Sergejack, je viens d'effectuer les remplacemenst necessaire.
    Et j'ai le recapitulatif de tous les ID de ma table. Mais lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NID FROM vNextID WHERE NUMERO = 1430
    qui est mon dernier numero généré, le resultat affiche . Or le but de ma demarche est de deteminer la valeur du prochain ID, sinon rien. Et la ça ne marche pas.

Discussions similaires

  1. Appels de procedures stockées dans une proc stockée ?
    Par Nadaa dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 17/07/2008, 10h32
  2. Réponses: 2
    Dernier message: 22/06/2006, 11h26
  3. Executer une chaine concatener dans une procedure stockée
    Par nic413 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 19/06/2006, 10h24
  4. executer une procedure stockée d'une BD depuis une autre BD
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/08/2005, 16h02
  5. Réponses: 3
    Dernier message: 21/09/2004, 07h35

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