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

Bases de données Delphi Discussion :

Procédures stockées SQL Server, récupération sous Delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Procédures stockées SQL Server, récupération sous Delphi
    Bonjour,

    il m'est impossible de relier un Datasource à une procédure stockée, y etes vous arrivé?
    il m'est impossible "d'ajouter tout les champs" comme il est possible avec toute requête normal, le message d'erreur m'annonce :

    CommandText ne renvoie pas un ensemble de résultats

    je dois absolument résoudre ce problème en procédure stockées!

    voici le code d'une de mes procédures

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    ALTER procedure [dbo].[Ffournisseur_produit_tot] (@produit_id int output,
    										   @produit_libelle varchar(20)output,		
    										   @conditionnement_libelle varchar(20) output,
    										   @produit_quantite varchar(20) output)
     
    as 
    begin
     
     
    select @produit_id = (select produit_id from produit where produit_id=1)
     
     
    declare C1 cursor for
    select P.produit_ID ,P.produit_libelle, C.conditionnement_libelle, P.produit_quantite
    from produit P, conditionnement C
    where C.conditionnement_id=P.conditionnement_id
    order by produit_libelle;
     
    open C1;
     
    while @@fetch_status=0 
    	begin
    	fetch next from C1 into @produit_id, @produit_libelle, @conditionnement_libelle, @produit_quantite; 
    	end
     
    	deallocate C1;
    end
    donc c'est une procédures censée retourner plusieurs champs! mais je n'arrive pas a récupérer ces champs sous Delphi!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    erf personne ne peut m'aider?

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    perso je ne connait pas SQL serveur . moi je recupére les valeurs de mes procedure via un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM MAPROCEDURE(:PARAM1,:PARAM2)
    j'ai déjà vu un post à peu prés identique sur le sujet , cherche un peu dans les messages , le ne date pas de plus un ou deux mois :lol


    il etait de toi je le croyais résolu .
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Points : 113
    Points
    113
    Par défaut
    tu ne peux pas faire une fonction ?
    et faire un select * from mafonction ?

    De plus, déclare dans ta procédure une tabe avec les données
    tu fais un insert a chaque passage du fetch

    apres pour renvoyer les valeurs il faut faire,
    soit un return table (fonction)
    soit un un select @table

    Là on n'a pas la procédure complete je pense

    Regarde d'abord ce que la procédure te renvoie dans sql avant d'essayé sous delphi, car c'est la meme requete : exec proc var1 ...

    @+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    j'ai essayé quelque chose qui fonctionne :

    sous SQL je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ALTER procedure [dbo].[Ffournisseur_produit_tot] 
    as
    begin
    select P.produit_ID ,P.produit_libelle, C.conditionnement_libelle, P.produit_quantite
    from produit P, conditionnement C
    where C.conditionnement_id=P.conditionnement_id
    order by produit_libelle;
    end
    Et sous Delphi ca fonctionne de la même manière, que les Query normales. Pour le passage de paramètre tout fonctionne aussi!
    Du coup j'ai plus besoin de curseurs, ni de fetch!
    Par contre je sais pas si c'est correct

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par rophi Voir le message
    Par contre je sais pas si c'est correct
    A priori je dirais oui, mais ne connaissant pas trop SQL Server...

    Cependant je me demande pourquoi tu passes par une procédure stockée alors qu'une simple requête doit suffire ?

    @+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    pour faire bosser le serveur, plus puissant au lieu de faire bosser le client!
    Même si dans ce cas là c'est en local je dois montrer des compétences BDD et client/serveur pou rmon BTS

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Points : 113
    Points
    113
    Par défaut
    tu écris :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select P.produit_ID ,P.produit_libelle, C.conditionnement_libelle, P.produit_quantite
    from produit P, conditionnement C
    where C.conditionnement_id=P.conditionnement_id
    order by produit_libelle;
    Fais plutot un inner join :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select P.produit_ID ,P.produit_libelle, C.conditionnement_libelle, P.produit_quantite
    from produit P INNER JOIN conditionnement C
    ON P.conditionnement_id=C.conditionnement_id
    order by produit_libelle;

    Ca utilisera les index de meilleure facon et la requete sera beaucoup plus rapide qu'avec un where.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Ha merci je ne connaissais pas, je vais me documenter un peu et l'intégrer à mes requètes Merci!

  10. #10
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Résolu? alors --> click sur "Résolu"
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    houla mais c'est que je me fais engueuler moi!
    En tout cas merci de vos réponses ++

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

Discussions similaires

  1. [PDO] Récupération retour d'une procédure stockée SQL Server
    Par July171292 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/11/2014, 14h50
  2. connection sql server 2000 sous delphi 6.0
    Par nkouo dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/08/2007, 15h15
  3. Réponses: 1
    Dernier message: 04/03/2007, 15h40
  4. [procédure stockée][SQL server]Extraction, réinsertion
    Par caelum dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/02/2006, 07h59
  5. Procédures stockées SQL Server compatibles avec MySQL ?
    Par Nen'S dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/01/2006, 19h18

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