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 :

appel d'une fonction dans un select


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 23
    Points
    23
    Par défaut appel d'une fonction dans un select
    Bonjour
    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
     
    declare @montant varchar(30) 
    SELECT @montant=dbo.ufn_GetMantant(Do_Piece) from DocEntete 
     
     
            SELECT DISTINCT top 
    (select top 1 P_Len_Aff from dbo.Parametres)
             IsNull(Do_Piece,'') AS Do_Piece
            ,IsNull(Do_Date,'') AS Do_Date
            ,IsNull(Do_AcceptePar,'') AS Do_AcceptePar
            ,IsNull(T_IdContact,'') AS Idcontact
            ,IsNull(Date_Livraison,'') AS Date_Livraison
            ,IsNull(Libelle,'') AS libelle_Service
            ,IsNull(T_intitule,'') AS Intitule
     
            ,IsNull(Do_Demandeur,'') AS Do_Demandeur
            ,Statut
     
     
        FROM DocEntete ,fonction fonc ,Compte_Tier com
    je souhaite dans la 2eme select afficher pour chaque ligne le montant mais j'ai pas pu le faire
    merci

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 66

    Informations forums :
    Inscription : Septembre 2009
    Messages : 68
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi il y a deux SELECT dans la seconde requête. Il me semble qu'elle est erronée, même sans fonction. Et puis il n'y a pas de clause join ou where : ça va retourner beaucoup de lignes !

    Sinon, je pense que tu peux remplacer n'importe quel Champ, ou n'importe quel expression comme ISNULL(Table.Champ) par un appel de fonction, genre dbo.Montant(table.Champ)

    Si tu n'y arrives toujours pas, dis nous le message d'erreur ou le problème exact.

    Cordialement,

    Martinus

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 117
    Points : 161
    Points
    161
    Par défaut
    Je ne saisi pas ta requête, il y a effectivement des choses étranges.
    Tu appelles ta fonction pour afficher ta variable dans le select d'une requête ... qui contient la table dans laquelle tu récupère ta valeur avec ta fonction.

    M'est avis que tu as juste besoin d'une jointure ou alors il faudrait que tu détailles ce que fait ta fonction GetMontant.

    Si tu veux garder la même logique (si j'ai raté un truc) tu peux toujours utiliser une variable dans un select mais le problème est que ta variable est évaluée AVANT ta deuxième requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    declare @mavariable varchar(x)
    Select @mavariable=mafonction(z) from matable
     
    select 
    @mavariable,
    champ1,
    champ2
    from matable
    join matable2 on (macondition)
    mais dans ce cas, tu auras toujours la même valeur de "mavariable" dans le résultat de la deuxième requête.

    Je présume que tu veux plutôt faire un truc du genre

    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
     
    declare @montant varchar(30) 
    SELECT @montant=dbo.ufn_GetMantant(Do_Piece) from DocEntete 
     
     
            SELECT DISTINCT top 
             dbo.ufn_GetMantant(Do_Piece) 
             ,IsNull(Do_Piece,'') AS Do_Piece
            ,IsNull(Do_Date,'') AS Do_Date
            ,IsNull(Do_AcceptePar,'') AS Do_AcceptePar
            ,IsNull(T_IdContact,'') AS Idcontact
            ,IsNull(Date_Livraison,'') AS Date_Livraison
            ,IsNull(Libelle,'') AS libelle_Service
            ,IsNull(T_intitule,'') AS Intitule
            ,IsNull(Do_Demandeur,'') AS Do_Demandeur
            ,Statut
             FROM DocEntete ,fonction fonc ,Compte_Tier com

    Ah oui, détail important, tu es en train de faire un produit carthésien là, c'est bien ce que tu veux faire ? Sinon, il vaudrait mieux que tu rajoutes tes join avec tes clauses.

Discussions similaires

  1. PHP4 appel d'une fonction dans une autre
    Par cmicdev dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 11h37
  2. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  3. Réponses: 6
    Dernier message: 16/11/2005, 20h43
  4. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37
  5. Réponses: 4
    Dernier message: 26/01/2005, 13h08

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