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

Langage SQL Discussion :

[SQL Server 2005] procedure dans isnull()


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut [SQL Server 2005] procedure dans isnull()
    Bonjour,
    J'execute un code assez simple du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Table1.Code, Table2.description from Table1 left join Table2 on Table1.Code=Table2.Code
    (En fait, c'est un peu plus compliqué que ca ... mais pour ma question,ca ira)

    Si le code n'existe pas, je voudrais pouvoir le creer avec une procedure stoquee. Comment pourrais je faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select isnull(Table1.Code, procedure Table1.Code), Table2.description from Table1 left join Table2 on Table1.Code=Table2.Code
    J'espere que vous aurez une solution ...

    Merci!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Hum... pourquoi passer par une procédure stockée ?
    Voici ce que je ferai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO ...
    SELECT ...
    FROM ...
    WHERE NOT EXISTS ( ... )
    Enfin merci d'indiquer votre SGBD et sa version

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Je suis sous SQL server 2005.

    EN fait, je veux passer par une procedure car la requete resemble a ca:

    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
    insert into #Result
    select T2.CODE,
    sum(T1.LOCALMP) as Today,
    (select sum(T1.LOCALMP) 
    from Table1 T3
    inner join Table2 T4
    on T3.SEDOL=T4.SEDOL
    where T3.Inserted_Date=dateadd(dd,-1,@Date)
    and T4.CODE=T2.CODE) as Yesterday,
    dbo.GetDailyDiff(@Date,T2.CODE,sum(T1.LOCALMP)) as DailyDiff,
    dbo.GetDailyRatio(@Date,T2.CODE,sum(T1.LOCALMP)) as DailyRatio,
    (sum(T1.LOCALMP)/(sum(T1.LOCALCOST/T1.QUANTITY))) as CurrOnBook,
    (select case when Date1>Date2 then (PrixActuel/PrixAchat -1) else (PrixActuel/ PrixOrigine-1) end 
    from #RightPart whereCODE_NAME=T2.CODE) as YTD
    from Table1 T1
    left join Table2 T2
    on T1.SEDOL=T2.SEDOL
    where T1.Inserted_Date=@Date
    group by T2.CODE
    J'ai supprimé un long morceaux, c'etait juste poru mieux expliquer ...
    Donc, en fait, le tout premier champs (T2.CODE) est null des fois. Je voudrais dans cette requete, executer la procedure pour chaque "null" rencontré car cette requete sert a verifier par rapport au code (T2.SEDOL) que ce CODE n'avait pas deja été verifier et s'il ne l'ai pas, le rajouter dans une autre table en lui donnant un code automatiquement (correspondant au SEDOL) et renvoit ce code dans la requete pour l'inserer directement ...

    C'est assez dur a expliquer a l'ecrit, j'espere que vous avez compris ...

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je comprends ; avez-vous essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO ...
    SELECT T2.CODE, MaFonction(...)
    FROM ...
    WHERE MaFonction(...) = <la_valeur_dans_le_cas_où_vous_voulez_faire_l_insertion>
    ...
    Remarque : vous êtes obligés de répéter cette condition qui figure dans la clause SELECT car même en utilisant un alias il n'est pas autorisé de l'utiliser dans la clause WHERE (sauf spécificité de votre SGBD) !

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Oui, j'ai essayé mais comme il faut controler et inserer dans une autre table, ca ne marche pas car une fonction ne peut pas faire d'insert ...

    J'ai contourné le probleme en faisant un update avant ...

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

Discussions similaires

  1. Connexion à SQL Server 2005 Express dans Delphi 2010.
    Par bubba2a dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/08/2010, 01h48
  2. [sql server 2005] Import dans sql server
    Par gmailex dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2009, 20h19
  3. [SQL Server 2005] print dans une procédure stockée
    Par anayathefirst dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 21/03/2008, 16h50
  4. PB Accès schémas BDD dans sql server 2005
    Par tikam dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/06/2006, 09h42
  5. Restaurer dans sql server 2005
    Par tikam dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/06/2006, 10h33

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