Bonjour, j'ai un problème que je n'arrive pas vraiment à comprendre : dans mon code vb, j'exécute une procédure stockée avec paramètres, pourtant, je m’aperçois ne rien n'a bougé dans ma base SQL, pourtant, quand je l'exécute sous SQL-Server 2008 R2 avec les mêmes paramètres, je vois que les modifications apportées ont été réalisées, wtf?
Côté vb:
Code vb : 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 Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command Dim l_code As Integer = -1 Dim l_msg As String = "" With cmd 'la chaine de connexion est de la forme suivante : Provider=SQLOLEDB.1;Data Source=serveur;Initial Catalog="xxx";User ID=xxx;Password=xxx .ActiveConnection = getConnexion() .CommandText = "Z_PS_GenererEcrituresComptables" .CommandType = CommandType.StoredProcedure .Parameters("@idSession").Value = 'N34L100031' .Parameters("@centralisationBancaire").Value = 1 End With rs = cmd.Execute If rs.EOF = False Then l_code = rs.Fields(0).Value 'je récupère 0 l_msg = rs.Fields(1).Value 'je récupère ok End If If l_code > 0 Then MsgBox(l_msg, MsgBoxStyle.Critical, "Stored Procedure") End If If rs.State > 0 Then rs.Close() End If rs = Nothing
Ma procédure stockée se présente de la manière suivante:
Code SQL : 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 ALTER PROCEDURE [dbo].[Z_PS_GenererEcrituresComptables](@idSession varchar(50),@centralisationBancaire tinyint) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; begin try begin tran --exécution de requêtes UPDATE et INSERT commit select 0,'ok' end try begin catch if @@TRANCOUNT>0 begin select 99, ERROR_MESSAGE() rollback end end catch END
Sous SQL-Server, quand je fais clic droit sur ma procédure stockée, je fais "Exécuter la procédure stockée...", je donne les mêmes valeurs aux paramètres, ce qui me génère le code suivant (et qui marche dans ce cas là):
Vous voyez d'où ça pourrait venir?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DECLARE @return_value int EXEC @return_value = [dbo].[Z_PS_GenererEcrituresComptables] @idSession = N'N34L100031', @centralisationBancaire = 1 SELECT 'Return Value' = @return_value GO
Merci
Edit : j'ai réussi en mettant le code suivant :
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 With cmd .ActiveConnection = getConnexion() .CommandText = "Z_PS_GenererEcrituresComptables(N'N34L100031',1)" .CommandType = CommandType.StoredProcedure end with rs = cmd.Execute
Partager