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 :

[DEBUTANT] procédure stockées dans select


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut [DEBUTANT] procédure stockées dans select
    Salut à tous,

    tout d'abord, bravo a ce qui on refait le forum, super agreable !

    bon voila, j'ai des soucis avec ma 1ère procédure stockée.

    Ma question avant de vous afficher tous mon code pour rien :
    Est il possible de mettre une procedure stockée dans un select avec renvoie de valeur ?

    si oui, j'ai fais une proc de test et je m'arrache les cheveux car sa fonctionne pas quelquesoit le sens dans lequel je la tourne.

    Voici mon test :

    La procedure créée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE  PROCEDURE newOrdre @RefCour varchar(19), @RefDern varchar(19) OUTPUT,
     @nOrdre smallint OUTPUT AS
     
    IF (@RefCour = @RefDern) 
    	SELECT @nOrdre = @nOrdre + 1
    	ELSE
    	BEGIN
    	SELECT @nOrdre = 1
    	SELECT @RefDern = @RefCour
    	END
     
    SELECT @nOrdre
    et la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @RefCour varchar(19)
    DECLARE @RefDern varchar(19)
    DECLARE @nOrdre smallint
    DECLARE @Temps varchar(9)
     
    SELECT @RefCour = 'test';
    SELECT @RefDern = 'aa';
    SELECT @nOrdre = 0;
     
    SELECT CodeListeFabStd, (AT_Ordre = newOrdre @RefCour, @RefDern, @nOrdre)
    FROM LDFC
    Le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Serveur : Msg 170, Niveau 15, État 1, Ligne 10
    Ligne 10 : syntaxe incorrecte vers '='.
    La table existe bien sûr.

    Ca m'enerve car je suis quasiment sur que c une/des erreur(s) de syntaxe !!

    Voila si quelqu'1 peu m'expliquer mon erreur, j'accepte son aide volontier.
    Merci

  2. #2
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    AT_Ordre = newOrdre ???

    cela dis que ta procédure stocké doit retourner une valeur ?? ça devient alors une fonction

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    c pour l'exemple, je souhaite faire une procedure car il me faut 2 paramètres soit en Entrée/Sortie en plus de la valeur de retour

    Est il possible de faire cette requete et quelle renvoie une valeur afficher comme un champ.

    J'espère que je m'explique bien, sinon hesite pas a demander des précision

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 915
    Points : 51 691
    Points
    51 691
    Billets dans le blog
    6
    Par défaut
    Vous ne pouvez pas apeller une procédure dans un ordre SQL.

    Voici une syntaxe plus correcte :

    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
    DECLARE @RefCour varchar(19)
    DECLARE @RefDern varchar(19)
    DECLARE @nOrdre smallint
    DECLARE @Temps varchar(9)
    DECLARE @Ordre
     
    SET @RefCour = 'test';
    SET @RefDern = 'aa';
    SET @nOrdre = 0;
     
     
    EXEC newOrdre @RefCour, @RefDern OUTPUT, @nOrdre OUTPUT
     
    SELECT CodeListeFabStd, @nOrdre 
    FROM LDFC
    A +

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    mOueh ok, j'ai du mal m'expliquer désolé
    Ce fameux nOrdre, il doit être différent selon la reference. En fait si la reference (@RefCour) est identique à celle de la ligne précédente (@RefDern) le numero s'incremente de un, sinon il revient à 1

    Donc je vais poser ma question différement, quels serait la solution (PROC, FONCTION, WHEN ...) pour arriver a ca.

    Ex :
    Ref : nOrdre
    Reference1: 1
    Reference1: 2
    Reference2: 1
    Reference3: 1
    Reference3: 2

    Vous voyez le genre.

    Sacré boudiou !! :-) y'a qd même ben un moyen de faire un truc aussi bête sur un SGBD moderne.

  6. #6
    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
    En v.2000 et précédentes, un curseur
    en v.2005, le T-SQL comprend de nouvelles fonctionnalités de ce type

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    y'a pas plus simple ? une astuce serait la bien venu.
    En attendant, merci, je vais essayer ca.

  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
    En 2005, ça devient simple. Quelle est votre version ??

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    2000 Sp3

  10. #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    Nickel, cela fonctionne trop bien !

    GROS MERCI A TOUS, ca me sauve la vie.

    Bonne continuation

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

Discussions similaires

  1. Appel de procédure stockée dans un select
    Par sabdoul dans le forum PL/SQL
    Réponses: 10
    Dernier message: 02/04/2015, 11h49
  2. Réponses: 2
    Dernier message: 19/05/2010, 16h20
  3. Appeler procédure stockée dans requête SELECT
    Par stever50 dans le forum Développement
    Réponses: 2
    Dernier message: 11/05/2010, 14h09
  4. Appel d'une procédure stockée dans un ordre select
    Par ellyne dans le forum Développement
    Réponses: 6
    Dernier message: 29/06/2008, 21h03
  5. Procédures stockées dans accèss?
    Par joe.lindien dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/11/2003, 15h31

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