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 :

Problème avec une procédure stockée


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut Problème avec une procédure stockée
    bonjour j'ai un petit souci
    j'ai créé une procédure stockée sur sql server pour authentifier des comptes dans ma base de données à travers une application en Delphi mais elle ne me retourne rien. C'est pour un projet, je suis débutant en SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    alter proc auth
    @id varchar(12),
    @pss varchar(12),
    @f int output
    as begin
    declare @res varchar(1)
    if  exists( select id_compte from comptes where id_compte=@id and pass=@pss) 
    set @f=1 else set @f=0 
     return @f
    end
    Et quand j'exécute, il y a ce message :
    (Msg*201, Niveau*16, État*4, Procédure*auth, Ligne*0
    La procédure ou fonction 'auth' attend le paramètre '@f', qui n'a pas été fourni.)
    Où est le problème avec ma variable de sortie ? Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Ci-dessous quelques questions ou remarques

    Comment appelles-tu ta procédure sous Delphi ?
    As-tu bien déclaré lors de l'appel le paramètre @f en tant que paramètre Output (généralement
    Direction := pdInputOutput; // Paramètre Direction
    Exemple :
    Code DELPHI : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     with Parameters.AddParameter do
     begin
     // ... 
     Direction := pdInputOutput; // Paramètre Direction 
     // .. 
     
     end;
    Autres Remarques :
    Ta dernière instruction
    RETURN @f
    me parait superflue et prête à confusion voire dangereuse. En effet, il s'agit d'une procédure. ce n'est pas une fonction ! je te conseille donc de remplacer
    RETURN @f
    par
    Return -- (tout simplement !)

    PS : Certains composants sous Delphi génèrent des erreurs dès lors que la procédure retourne une valeur (RETURN @xxx ). En effet, Certains composants Delphi d'accès aux données, se savent pas interpréter ces valeurs de retour superflues qui transitent sur le réseau ! Donc limites toi uniquement aux paramètres OUTPUT.

    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Bonjour,

    Essayez le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    alter proc auth
    @id varchar(12),
    @pss varchar(12)
    as begin
    declare @res varchar(1)
    declare @f int =0
    if exists( select id_compte from comptes where id_compte=@id and pass=@pss) 
    set @f=1 else set @f=0 
    return @f
    end
    Vous ne passez pas de valeur par défaut à votre paramètre @f que vous n'utilisez pas dans votre code, ça ne pourras jamais marché

    Soit vous décaler la déclaration de la variable, soit vous affecter une valeur par défaut à la déclaration du paramètre.


    Julien
    MCSA SQL SERVER |MCT | MVP Data Platform

  4. #4
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    oui la procedure marche maintenant mais quand je veux l'execute sur delphi avec le composant adostoredproc il me faut une variable de sortie '@f ' pour utiliser le resultat donc je crois qu'il faut declarer le '@f' en output mais ca ne marche pas meme quand j'active le compsant sur delphi il m'affiche un message d'erreur

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Dans ce cas ecoutez ce qui a été mis plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    alter proc auth
    @id varchar(12),
    @pss varchar(12),
    @f int output = -1
    as begin
    declare @res varchar(1)
    if  exists( select id_compte from comptes where id_compte=@id and pass=@pss) 
    set @f=1 else set @f=0 
     return 
    end
    MCSA SQL SERVER |MCT | MVP Data Platform

  6. #6
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    Merci ca marche apres plusieurs testes

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Avez vous compris pourquoi ça marchait maintenant ?
    MCSA SQL SERVER |MCT | MVP Data Platform

  8. #8
    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
    pensez aussi à être rigoureux sur vos norme de nommage.

    En premier lie, adoptez en une!

    Exemple P_maprocedure pour les procedure
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

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

Discussions similaires

  1. Petit problème avec une procédure stockée
    Par Poulain dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/05/2007, 18h58
  2. [VB.NET 2.0] - Problème avec une procédure stockée
    Par Khrysby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h25
  3. Réponses: 2
    Dernier message: 06/12/2006, 08h54
  4. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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