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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif 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
    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 Expert

    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
    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+

  3. #3
    Membre chevronné
    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
    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

  4. #4
    Membre très actif 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
    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 chevronné
    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
    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

  6. #6
    Membre très actif 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
    Par défaut
    Merci ca marche apres plusieurs testes

  7. #7
    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 : 43
    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
    Par défaut
    pensez aussi à être rigoureux sur vos norme de nommage.

    En premier lie, adoptez en une!

    Exemple P_maprocedure pour les procedure

+ 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