Bonjour,
j' ai créé une procédure stockée pour faire un "Insert".
Quand je l' exécute il m'écrit réussie, mais si je vérifie l'insertion je trouve rien.
Est ce que quelqu'un peut m' aider ?
* Merci*
Bonjour,
j' ai créé une procédure stockée pour faire un "Insert".
Quand je l' exécute il m'écrit réussie, mais si je vérifie l'insertion je trouve rien.
Est ce que quelqu'un peut m' aider ?
* Merci*
Tu peux nous fournir le code de ta procédure stockée ? Tu exécutes comment ta procédure stockée ?
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 ALTER PROCEDURE [dbo].[SplitBarreCodePalette] -- Add the parameters for the stored procedure here AS declare @a1 varchar(50) declare @b1 varchar(50) declare @c1 varchar(50) declare @d1 varchar(50) declare @e1 varchar(50) declare @f1 varchar(50) declare @g varchar(50) declare @a2 varchar(50) declare @b2 varchar(50) declare @c2 varchar(50) declare @d2 varchar(50) declare @e2 varchar(50) declare @f2 varchar(50) declare @a3 varchar(50) declare @b3 varchar(50) declare @c3 varchar(50) declare @d3 varchar(50) declare @e3 varchar(50) declare @temp1 varchar(50) declare @temp2 varchar(50) declare @temp3 varchar(50) DECLARE getCURE1 CURSOR FAST_FORWARD FOR SELECT BC1,BC2,BC3 from ScanParPalette where status=0 OPEN getCURE1 FETCH next from getCURE1 into @temp1,@temp2,@temp3 while 1=1 BEGIN BEGIN if @@fetch_status <> 0 break END BEGIN select @a1 =SUBSTRING(@temp1,1,1) select @b1= SUBSTRING(@temp1,2,6) select @c1= SUBSTRING(@temp1,8,1) select @d1= SUBSTRING(@temp1,9,2) select @e1= SUBSTRING(@temp1,11,12) select @f1= SUBSTRING(@temp1,23,3) select @g= 100 select @a2 =SUBSTRING(@temp2,1,1) select @b2= SUBSTRING(@temp2,2,2) select @c2= SUBSTRING(@temp2,4,6) select @d2= SUBSTRING(@temp2,10,6) select @e2= SUBSTRING(@temp2,16,4) select @f2= SUBSTRING(@temp2,20,7) select @a3 =SUBSTRING(@temp3,1,1) select @b3= SUBSTRING(@temp3,2,7) select @c3= SUBSTRING(@temp3,9,4) select @d3= SUBSTRING(@temp3,13,4) select @e3= SUBSTRING(@temp3,17,2) insert into ProjectF.dbo.ProductIdentification(BarreCodeIdentifier, PmiItemCode, PartUsageIndicator, PaletteStatusIndicator, PurchaseOrderNo, BaleIdentification, ProductionOrder) values(@a1,@b1,@c1,@d1,@e1,@f1,@g) insert into ProjectF.dbo.ProductInformation(BarreCodeIdentifier, ManufactureSequenceNumber, PmiVendorNumber, PaletteDate, ExpiryDate, ManufacturingBatchId) values(@a2,@b2,@c2,@d2,@e2,@f2) insert into ProjectF.dbo.ProductQuantity(BarreCodeIdentifier, TotalQuatity, NetWeight, GrossWeight, IdentifierToDefine) values(@a3,@b3,@c3,@d3,@e3) update dbo.ScanParPalette set Status=1 where BC1=@temp1 FETCH next from getCURE1 into @temp1,@temp2,@temp3 END END close getCURE1 deallocate getCURE1
Et tu l'exécute comment ? Comme ceci ?
Par contre coté esthétique, le while 1 = 1, hum comment dire... Tu pourrais plutôt faire un WHILE @@FETCH_STATUS = 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec [dbo].[SplitBarreCodePalette]
Pour l'exécuter je fais un clic droit sur le nom de la procédure et je clic sur exécuter.
Mais le code c 'est bon.
Comment faire pour l'exécuter toutes les une minute.
Cordialement
Pour l'exécuter toutes les minutes, si tu n'es pas en version Express, il suffit de créer un job dans le SQL Agent qui est planifié toutes les minutes et qui exécute ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec [dbo].[SplitBarreCodePalette]
Question bête mais... Un joli MERGE plutôt qu'un curseur dégueulasse et contre performant, ça serait pas un petit peu mieux?
Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous
Mon Tutoriel pour apprendre les Agregations
Consultez mon Blog SQL destiné aux débutants
Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server
Jamais vu un code aussi dégeulasse !
3 vue de splittage et 3 requêtes serait suffisant pour tout faire !
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/ * * * * *
Allez, bonne âme je vous donne une solution avant de partir en vacances....
1 - la vue (une seule suffit)
2 - la procédure
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 CREATE VIEW dbo.V_ScanParPalette_tmp AS SELECT SUBSTRING(BC1, 1, 1) AS A1, SUBSTRING(BC1, 2, 6) AS B1, SUBSTRING(BC1, 8, 1) AS C1, SUBSTRING(BC1, 9, 2) AS D1, SUBSTRING(BC1,11,12) AS E1, SUBSTRING(BC1,23, 3) AS F1, SUBSTRING(BC2, 1, 1) AS A2, SUBSTRING(BC2, 2, 2) AS B2, SUBSTRING(BC2, 4, 6) AS C2, SUBSTRING(BC2,10, 6) AS D2, SUBSTRING(BC2,16, 4) AS E2, SUBSTRING(BC2,20, 7) AS F2, SUBSTRING(BC3, 1, 1) AS A3, SUBSTRING(BC3, 2, 7) AS B3, SUBSTRING(BC3, 9, 4) AS C3, SUBSTRING(BC3,13, 4) AS D3, SUBSTRING(BC3,17, 2) AS E3 FROM ScanParPalette WHERE "STATUS"=0; GO
A +
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 CREATE PROCEDURE dbo.SplitBarreCodePalette_NEW AS SET NOCOUNT ON; DECLARE @g VARCHAR(50) = 100, @e NVARCHAR(1250); BEGIN TRANSACTION; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN TRY INSERT INTO ProjectF.dbo.ProductIdentification (BarreCodeIdentifier, PmiItemCode, PartUsageIndicator, PaletteStatusIndicator, PurchaseOrderNo, BaleIdentification, ProductionOrder) SELECT A1, B1, C1, D1, E1, F1, @g FROM dbo.V_ScanParPalette_tmp; INSERT INTO ProjectF.dbo.ProductInformation (BarreCodeIdentifier, ManufactureSequenceNumber, PmiVendorNumber, PaletteDate, ExpiryDate, ManufacturingBatchId) SELECT A2, B2, C2, D2, E2, F2 FROM dbo.V_ScanParPalette_tmp; INSERT INTO ProjectF.dbo.ProductQuantity (BarreCodeIdentifier, TotalQuatity, NetWeight, GrossWeight, IdentifierToDefine) SELECT A3, B3, C3, D3, E3 FROM dbo.V_ScanParPalette_tmp; UPDATE dbo.ScanParPalette SET "STATUS" = 1 WHERE "STATUS" = 0; COMMIT TRANSACTION; END TRY BEGIN CATCH SET @e = ERROR_MESSAGE(); ROLLBACK TRANSACTION; RAISERROR('%s', 16, 1, @e); END CATCH; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; GO
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/ * * * * *
Bonjour,
comment manipuler une balise div dans aspx.
Bonjour,
Cette question ne concerne pas SQL Server.
Merci de poster dans le bon Forum.
![]()
« Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
- Confucius -
Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office
Solutions d'Entreprise
![]()
Partager