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

MS SQL Server Discussion :

Les Procédures Stockées


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut Les Procédures Stockées
    Bonjour,
    je voudrais savoir s'il est possible de faire une boucle FOR dans une procedure stockée sous SQLServer 2008, si oui je vous pris de me donner un exemple, Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Pas de FOR, mais du WHILE (qui peut simuler du FOR) !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut
    Merci,
    En fait je voudrais faire un traitement un peu comliqué, j'ai pu le faire en VB.Net, et j'aimerais le refaire dans une procedure stockée.

    voila un exemple:

    Ticker MarketCap Date
    A 120000 2011-09-22
    A 230000 2011-09-24
    A 677000 2011-09-25

    dans une fenetre j'ai une liste des tickers (dans une chekedlistbox), l'utilisateur a le droit de cocher le nombre de ticker qu'il souhaite.
    le principe c'est de calculer la performance de chaque ticker.
    Pour le premier enregistrement doit tjrs affecter 1
    dans les autres lignes il faut calculer la division de la ligne /la ligne -1.
    Le resultat sera:
    Date Perf
    2011-09-22 1
    2011-09-24 230000/120000
    2011-09-25 677000/230000.
    Sans Boucle comment faire, Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    En utilisant une fonction de fenêtrage dans une simple requête SQL, par exemple.

    Démo :

    Jeu d'essais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE MA_TABLE
    (Ticker CHAR(1),
     MarketCap FLOAT,
     MaDate DATE);
     
    INSERT INTO MA_TABLE
    VALUES  
    ('A', 120000, '2011-09-22'),
    ('A', 230000, '2011-09-24'),
    ('A', 677000, '2011-09-25');
    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH T AS
    (SELECT *, ROW_NUMBER() OVER(PARTITION BY Ticker ORDER BY MaDate DESC) AS N
     FROM   MA_TABLE)
    SELECT T1.Ticker, T1.MaDate, T1.MarketCap / COALESCE(T2.MarketCap, T1.MarketCap)
    FROM   T AS T1
           LEFT OUTER JOIN T AS T2 
                ON T1.Ticker = T2.Ticker
                   AND T1.N = T2.N - 1
    ORDER BY 1, 2
    1) appeler une colonne "DATE" est franchement stupide. C'est un mot clef réservé de SQL et ne peut que vous conduire à des ennuis !
    2) pour apprendre SQL, rien ne vaut mon site ou mon livre.
    En particulier :
    a) sur les CTE (WITH) : http://sqlpro.developpez.com/cours/s...te-recursives/
    b) sur les fonctions de fenêtrage : http://sqlpro.developpez.com/article...clause-window/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    SQL Pro...
    On sent bien là le prof (ce n'est pas péjoratif, loin de là)
    Je pense que sihammaster est un dev .net qui doit faire du SQL (comme beaucoup maintenant dans la vie courante) et que si tu commences à lui faire apprendre les cubes pour la seule requête complexe qu'il aura a écrire c'est un peu lourd; D'autant plus que si d'autres dev de sa boîte tombent sur un cube je pense qu'ils feront la même tête qu'une poule qui trouve une fourchette
    Je pense qu'un petit curseur serait plus simple a comprendre.
    Ou il faudrait que MS fasse des syntaxes simples du type Start With d'Oracle.

    Bonne journée

    PS: Avant que tu sautes sur ton fauteuil, je sais que la syntaxe d'Oracle n'est pas du SQL, mais il nous faut vivre avec notre temps ; c'est finit les DBA études qui ne faisaient que de l'"optimisation"....

  6. #6
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut
    Bonjour,
    Merci infiniment ca marche nickel!!!!!, vraiment vous etes le MASTER SQLPRO.
    Merci bcp serge0934 tu m'a bien compris, je trouve le code .Net plus facile que les requetes complexes parce que je travaill bcp sur le code que sur les requetes.
    Merci encore

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par serge0934 Voir le message
    ... si tu commences à lui faire apprendre les cubes pour la seule requête complexe qu'il aura a écrire c'est un peu lourd....
    La requête présentée n'a rien à voir avec la notion de cube d'aucune sorte ni d'aucune manière que ce soit, et reste la solution la plus performante à long terme.

    je pense qu'après 27 ans de SQL, vous auriez peut être besoin d'un léger rafraichissement !

    ;-)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/08/2007, 21h11
  2. comment gerer les procédures stockées
    Par fadex dans le forum JDBC
    Réponses: 3
    Dernier message: 01/05/2006, 13h54
  3. [Mapping O/R] - Pour ou contre les procédures stockées
    Par spidetra dans le forum Persistance des données
    Réponses: 8
    Dernier message: 03/04/2006, 10h01
  4. Sauvegarder les procédures stockées
    Par Misdrhaal dans le forum Oracle
    Réponses: 2
    Dernier message: 27/03/2006, 14h12
  5. Informations sur les procédures stockées
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/01/2004, 14h30

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