Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 10h12   #1
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
Par défaut INSERT et SELECT en même temps sur une table

Bonjour,

je tiens à demander votre aide sur cette question, en l'occurrence récupérer des données qu'on vient juste d'insérer dans une table.
Ma procédure stockée insère deux lignes et les récupère juste après pour insérer une autre ligne qui est la somme de ces dernières.

Mon problème est que les deux premiers INSERT marchent mais le troisième me renvoie une valeur null : pas la somme que j'attends.

Voilà le corps de ma procédure :
Code :
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
ALTER PROCEDURE essai 
 
AS
BEGIN
 
INSERT INTO [REPERES-DW].[dbo].[Table_1]
           ([id]
           ,code
           ,[valeur])
     VALUES
           (1
           ,'A'
           ,5)
 
 
INSERT INTO [REPERES-DW].[dbo].[Table_1]
           ([id]
           ,code
           ,[valeur])
     VALUES
           (2
           ,'B'
           ,4)           
 
 --===========================================-
 
 declare @A AS int
 SELECT valeur FROM Table_1 WHERE code = 'A'
 
 declare @B AS int
 SELECT valeur FROM Table_1 WHERE code = 'B'
 
 
INSERT INTO [REPERES-DW].[dbo].[Table_1]
           ([id]
           ,code
           ,[valeur])
   SELECT  
 
           id,
           'C',
          (@A +@B  ) AS valeur
 
        FROM Table_1  
 
 
END
GO
Merci de m'aider s'il vous plaît.
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h38   #2
Membre du Club
 
Inscription : juin 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 115
Points : 41
Points : 41
Au lieu de :
Citation:
Envoyé par xavier81 Voir le message
declare @A as int
select valeur from Table_1 where code = 'A'

declare @B as int
select valeur from Table_1 where code = 'B'
il faut mettre :
Citation:
Envoyé par xavier81 Voir le message
declare @A as int
select @A =valeur from Table_1 where code = 'A'

declare @B as int
select @B = valeur from Table_1 where code = 'B'
Et tout marchera

Une autre solution plus propre, mais un peu plus délicate à mettre en oeuvre,
c'est de déclarer une variable table, et d'utiliser l'instruction Output dans la commande insert qui alimentera cette variable table,
puis de l'interroger à la fin pour effectuer le cumul
azur668 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2011, 12h03   #3
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
ouh je te remercie bcp

tout baigne dans l'huile
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web