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 :

Procédure stockée


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Procédure stockée
    Bonsoir à tous,
    J'ai besoin d'aide pour créer une procédure stockée qui permettra de sélectionner des données dans plusieurs tables différentes et de les stocker dans des variables en vu de les inserer dans une nouvelle table.
    J'ai des problèmes avec la création des procédures stockées.
    Merci de la compréhension et de votre aide.

    Comme demandé voici mon bout de code:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    -- création de procédure INSERTDATA
    CREATE PROCEDURE INSERTDATA
    @LDNM FLOAT,    
    @SHPN FLOAT 
    @RSSN FLOAT
    @RTN    FLOAT
    @DLNO FLOAT OUTPUT
     
    BEGIN
     
    SET @LDNM=(SELECT tmldnm 
    FROM proddta.f4960
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    SET @SHPN=(SELECT tmldnm 
    FROM proddra.f4961
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    SET @RSSN=(SELECT tmldnm 
    FROM proddya.f4962
    WHERE TMLDNM=62000505)
     
    BEGIN
     
    SET @RSSN=(SELECT tmldnm 
    FROM proddpa.f4963
    WHERE TMLDNM=62000505)
    END
     
    BEGIN
     
    SET @DLNO=(SELECT tmldnm 
    FROM proddza.f4960
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    INSERT INTO proddta.f4941
    (rsRSSN, rsMOT, rsCARS, rsRTN, rsDLNO)
    VALUES
    (
    @LDNM     
    @SHPN 
    @RSSN 
    @RTN    
    @DLNO 
    )
     
    END
    Merci pour vos contributions.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bat_dmv Voir le message
    Bonsoir à tous,
    J'ai besoin d'aide pour créer une procédure stockée qui permettra de sélectionner des données dans plusieurs tables différentes et de les stocker dans des variables en vu de les inserer dans une nouvelle table.
    J'ai des problèmes avec la création des procédures stockées.
    Merci de la compréhension et de votre aide.
    Montre nous ce que tu as fait, il sera alors plus opportun de donner des conseils.

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Jerome_Mtl Voir le message
    Montre nous ce que tu as fait, il sera alors plus opportun de donner des conseils.
    Comme demandé voici mon bout de code:


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    -- création de procédure INSERTDATA
    CREATE PROCEDURE INSERTDATA
    @LDNM FLOAT,    
    @SHPN FLOAT 
    @RSSN FLOAT
    @RTN    FLOAT
    @DLNO FLOAT OUTPUT
     
    BEGIN
     
    SET @LDNM=(SELECT tmldnm 
    FROM proddta.f4960
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    SET @SHPN=(SELECT tmldnm 
    FROM proddra.f4961
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    SET @RSSN=(SELECT tmldnm 
    FROM proddya.f4962
    WHERE TMLDNM=62000505)
     
    BEGIN
     
    SET @RSSN=(SELECT tmldnm 
    FROM proddpa.f4963
    WHERE TMLDNM=62000505)
    END
     
    BEGIN
     
    SET @DLNO=(SELECT tmldnm 
    FROM proddza.f4960
    WHERE TMLDNM=62000505)
     
    END
     
    BEGIN
     
    INSERT INTO proddta.f4941
    (rsRSSN, rsMOT, rsCARS, rsRTN, rsDLNO)
    VALUES
    (
    @LDNM     
    @SHPN 
    @RSSN 
    @RTN    
    @DLNO 
    )
     
    END
    Merci pour vos contributions.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Enlevez tous les BEGIN et END à l'exception du premier BEGIN et du dernier END : les autres ne servent à rien.

    Il me semble que vous faites fausse route, car vous ne prenez d'une valeur d'une colonne dans chaque table, alors qu'il est possible que la requête vous en retourne plusieurs, sauf bien sûr si la colonne TMLDNM est clé primaire et que votre clé primaire n'est pas composite (= sur plusieurs colonnes).

    Vous écrivez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tmldnm 
    FROM proddza.f4960
    WHERE TMLDNM=62000505
    Vous obtiendrez donc forcément 62000505.

    Il m'est difficile également de comprendre ce que vous souhaitez faire, car le nom de vos table est totalement abstrait ...
    Essayez d'être un peu plus précis dans ce que vous souhaitez obtenir

    @++

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Enlevez tous les BEGIN et END à l'exception du premier BEGIN et du dernier END : les autres ne servent à rien.

    Il me semble que vous faites fausse route, car vous ne prenez d'une valeur d'une colonne dans chaque table, alors qu'il est possible que la requête vous en retourne plusieurs, sauf bien sûr si la colonne TMLDNM est clé primaire et que votre clé primaire n'est pas composite (= sur plusieurs colonnes).

    Vous écrivez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tmldnm 
    FROM proddza.f4960
    WHERE TMLDNM=62000505
    Vous obtiendrez donc forcément 62000505.

    Il m'est difficile également de comprendre ce que vous souhaitez faire, car le nom de vos table est totalement abstrait ...
    Essayez d'être un peu plus précis dans ce que vous souhaitez obtenir

    @++

    Merci pour l'aide,

    En fait ce que je cherche à faire c'est de transférer des champs sélectionnés dans plusieurs TABLES différentes dans une nouvelle TABLE.
    Je voulais une Procédures Stockée qui me permettrait de réaliser ces transferts.

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    C'est ce que vous avez écrit dans votre premier post, donc cela ne nous aide pas ...

    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
    SELECT TA.tmldnm AS LDNM,
    	RA.tmldnm AS SHPN,
    	YA.tmldnm AS RSSN,
    	PA.tmldnm AS RSSN2,
    	ZA.tmldnm AS DLNO
    FROM proddta.f4960 AS TA
    CROSS JOIN proddra.f4961 AS RA
    CROSS JOIN proddya.f4962 AS YA
    CROSS JOIN proddpa.f4963 AS PA
    CROSS JOIN proddza.f4960 AS ZA
    WHERE TA.tmldnm = 62000505
    AND RA.tmldnm = 62000505
    AND YA.tmldnm = 62000505
    AND PA.tmldnm = 62000505
    AND ZA.tmldnm = 62000505
    Vos obtiendrez le nombre de lignes de chaque table multiplié entre eux, avec dans chaque colonne 62000505 ... Intérêt ?

    @++

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par elsuket Voir le message
    C'est ce que vous avez écrit dans votre premier post, donc cela ne nous aide pas ...

    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
    SELECT TA.tmldnm AS LDNM,
        RA.tmldnm AS SHPN,
        YA.tmldnm AS RSSN,
        PA.tmldnm AS RSSN2,
        ZA.tmldnm AS DLNO
    FROM proddta.f4960 AS TA
    CROSS JOIN proddra.f4961 AS RA
    CROSS JOIN proddya.f4962 AS YA
    CROSS JOIN proddpa.f4963 AS PA
    CROSS JOIN proddza.f4960 AS ZA
    WHERE TA.tmldnm = 62000505
    AND RA.tmldnm = 62000505
    AND YA.tmldnm = 62000505
    AND PA.tmldnm = 62000505
    AND ZA.tmldnm = 62000505
    Vos obtiendrez le nombre de lignes de chaque table multiplié entre eux, avec dans chaque colonne 62000505 ... Intérêt ?

    @++
    Bonjour,

    Voici le code que j'ai essayé de developper mais le serveur me renvoie un message d'erreur de type: Msg 102 Niveau 16, Etat 5 ligne 1 ','

    Voici le code:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    INSERT INTO proddta.F4941 (RSSHPN, 
    RSRSSN, 
    RSMOT, RSOVRM, 
    RSCARS, RSOVRC, 
    RSROUT, RSRTN, 
    RSDLNO, RSFRSC, 
    RSZON, RSVMCU, 
    RSLDNM, RSTRPL, 
    RSSTSQ, RSANID, 
    RSORGN, RSANCC, 
    RSWGTS, RSWTUM, 
    RSSCVL, RSVLUM, 
    RSLGTS, RSWTHS, 
    RSHGTS, RSGTHS, 
    RSLUOM, RSNPCS, 
    RSNCTR, RSCCUB, 
    RSDSTN, RSUMD1, 
    RSDSRC, RSELTM, 
    RSUM, RSAEXP, 
    RSFEA, RSCRCD, 
    RSECST, RSPPDJ, 
    RSPMDT, RSRSDJ, 
    RSRSDT, RSLDDT, 
    RSLDTM, RSADDJ, 
    RSADTM, RSDLDT, 
    RSDLTM, RSRRTR, 
    RSRATR, RSDPCR, 
    RSREFQ, RSREFN, 
    RSFRTD, RSFRTV, 
    RSFRVC, RSFRVF, 
    RSCRCP, RSFRCC, 
    RSFRCF, RSCRDC, 
    RSINTF, RSIBRS, 
    RSLSLT, RSLSUT, 
    RSLALT, RSLAUT, 
    RSTPUF, RSTPUT, 
    RSTDLF, RSTDLT, 
    RSDEPU, RSDLPU, 
    RSDEDL, RSDLDL, 
    RSDKID, RSPRNB, 
    RSPRTE, RSLNMB, 
    RSCNMR, RSURCD, 
    RSURDT, RSURAT, 
    RSURAB, RSURRF, 
    RSUSER, RSPID, 
    RSJOBN, RSUPMJ, RSTDAY)
    SELECT (IQSHPN, IQRSSN, TMMOT, '', TMCARS, '', '', 
    IQRTN, IQDLNO, 'SONA', '', IQVMCU, TMLDNM, 1, 1, 0, 
    IQORGN, IQANCC, IQWTCA, TMWTUM, IQNPCS, 
    TMVLUM, 0, 0, 0, 0, 'MT', IQNPCS, 0, 0, 
    0, 'KM', TMDSRC, 0, '', IQAEXP, 0, 'XOF', 
    IQECST, TMPPDJ, 0, TMPPDJ, 0, TMADDJ, TMADTM, 
    TMADDJ, TMADTM, '', 0, 0, 1, 1, '', '', '', '', 
    TMFRVC, 0, 'XOF', 0, 0, 'XOF', 1, '', 0, 0, 0, 0, 
    0, 0, 0, 0, '', '', '', '', '', 0, '', 0, '', '', '', 0, 0, '', 
    TMUSER, TMPID, TMJOBN, TMUPMJ, TMTDAY) 
    from proddta.F4960 join proddta.F49633 
           on TMLDNM=IQLDNM 
    WHERE TMLDNM IN (60000105, 62000032, 60000306, 60000307)
    Ps: je suis Novice dans la programmation des procédures stockées. Soyez indulgent.
    Merci

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par bat_dmv Voir le message
    Bonjour,

    Voici le code que j'ai essayé de developper mais le serveur me renvoie un message d'erreur de type: Msg 102 Niveau 16, Etat 5 ligne 1 ','

    Voici le code:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    INSERT INTO proddta.F4941 (RSSHPN, 
    RSRSSN, 
    RSMOT, RSOVRM, 
    RSCARS, RSOVRC, 
    RSROUT, RSRTN, 
    RSDLNO, RSFRSC, 
    RSZON, RSVMCU, 
    RSLDNM, RSTRPL, 
    RSSTSQ, RSANID, 
    RSORGN, RSANCC, 
    RSWGTS, RSWTUM, 
    RSSCVL, RSVLUM, 
    RSLGTS, RSWTHS, 
    RSHGTS, RSGTHS, 
    RSLUOM, RSNPCS, 
    RSNCTR, RSCCUB, 
    RSDSTN, RSUMD1, 
    RSDSRC, RSELTM, 
    RSUM, RSAEXP, 
    RSFEA, RSCRCD, 
    RSECST, RSPPDJ, 
    RSPMDT, RSRSDJ, 
    RSRSDT, RSLDDT, 
    RSLDTM, RSADDJ, 
    RSADTM, RSDLDT, 
    RSDLTM, RSRRTR, 
    RSRATR, RSDPCR, 
    RSREFQ, RSREFN, 
    RSFRTD, RSFRTV, 
    RSFRVC, RSFRVF, 
    RSCRCP, RSFRCC, 
    RSFRCF, RSCRDC, 
    RSINTF, RSIBRS, 
    RSLSLT, RSLSUT, 
    RSLALT, RSLAUT, 
    RSTPUF, RSTPUT, 
    RSTDLF, RSTDLT, 
    RSDEPU, RSDLPU, 
    RSDEDL, RSDLDL, 
    RSDKID, RSPRNB, 
    RSPRTE, RSLNMB, 
    RSCNMR, RSURCD, 
    RSURDT, RSURAT, 
    RSURAB, RSURRF, 
    RSUSER, RSPID, 
    RSJOBN, RSUPMJ, RSTDAY)
    SELECT (IQSHPN, IQRSSN, TMMOT, '', TMCARS, '', '', 
    IQRTN, IQDLNO, 'SONA', '', IQVMCU, TMLDNM, 1, 1, 0, 
    IQORGN, IQANCC, IQWTCA, TMWTUM, IQNPCS, 
    TMVLUM, 0, 0, 0, 0, 'MT', IQNPCS, 0, 0, 
    0, 'KM', TMDSRC, 0, '', IQAEXP, 0, 'XOF', 
    IQECST, TMPPDJ, 0, TMPPDJ, 0, TMADDJ, TMADTM, 
    TMADDJ, TMADTM, '', 0, 0, 1, 1, '', '', '', '', 
    TMFRVC, 0, 'XOF', 0, 0, 'XOF', 1, '', 0, 0, 0, 0, 
    0, 0, 0, 0, '', '', '', '', '', 0, '', 0, '', '', '', 0, 0, '', 
    TMUSER, TMPID, TMJOBN, TMUPMJ, TMTDAY) 
    from proddta.F4960 join proddta.F49633 
           on TMLDNM=IQLDNM 
    WHERE TMLDNM IN (60000105, 62000032, 60000306, 60000307)
    Ps: je suis Novice dans la programmation des procédures stockées. Soyez indulgent.
    Merci


    Salut à tous

    je veux inserer des données provenant d'une table vers une autre table. Mais avant de faire l'insertion je veux tester par exple:
    Si Table1.Num_cli <> Table2.Num_cli
    alors inserer les données de table1 dans table2
    Sinon
    ne rien faire
    J'ai un début d'une procédure mais la suite coince, j'ai vraiment besoin d'un coup de pousse. Voici la Procedure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE PROCEDURE INSERT
     
    AS
     
    INSERT INTO StoreInformation1(store_name, sales, date)
     
    SELECT store_name, Sales, Date
     
    FROM StoreInformation2
    WHERE....
     
    GO
    Merci pour votre compréhension.

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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