Bonjour,
J'ai créé une procédure stockée prenant des paramètres en entrée et deux paramètres de sortie.
Quand je l'exécute sous sql developper j'ai les résultats suivants :
@pAllDone : 0
@pDetail : 73.r
Quand j'appelle cette procédure via mon application vbnet j'obtiens les résultats suivants :
@pAllDone : 0
@pDetail : 7
Je ne comprends pas pourquoi @pDetail n'a qu'un seul caractère quand j'appelle la procédure depuis mon programme vbnet alors que depuis sql developper tout semble correct.
En tête de la procédure stockée :
Et le code qui l'appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE PROCEDURE [dbo].[CheckAllReworksDone] @pSN as VARCHAR (13) = '', @pDevice as VARCHAR(25) = '', @pLogCheck as bit = 0, @pAllDone AS bit = 0 output, @pDetail as varchar(100) = '' output AS BEGIN ... END
Quelqu'un aurait-il une solution ?
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 Try 'Procédure stockée à utiliser Dim _Cnt As SqlConnection 'Database connection to use _Cnt = New SqlConnection(My.Settings.QUALITEConnectionString) Dim cmd As New SqlCommand("CheckAllReworksDone", _Cnt) cmd.CommandType = Data.CommandType.StoredProcedure 'Paramètres de la procédures Dim p1 As New SqlParameter("@pSN", txtSerialNumber.Text) p1.Direction = Data.ParameterDirection.Input cmd.Parameters.Add(p1) Dim p2 As New SqlParameter("@pDevice", "") p2.Direction = Data.ParameterDirection.Input cmd.Parameters.Add(p2) Dim p3 As New SqlParameter("@pLogCheck", False) p3.Direction = Data.ParameterDirection.Input cmd.Parameters.Add(p3) Dim p4 As New SqlParameter("@pAllDone", False) p4.Direction = Data.ParameterDirection.Output cmd.Parameters.Add(p4) Dim p5 As New SqlParameter("@pDetail", "") p5.Direction = Data.ParameterDirection.Output cmd.Parameters.Add(p5) _Cnt.Open() cmd.ExecuteNonQuery() _Cnt.Close() If cmd.Parameters("@pAllDone").Value Then imgResult.Image = My.Resources.button_ok imgResult.Visible = True lblDetails.Text = cmd.Parameters("@pDetail").Value + My.Application.oResManager.GetString("Defect") + IIf(CInt(p5.Value) < 2, "", "s") Else imgResult.Image = My.Resources.button_cancel imgResult.Visible = True lblDetails.Text = cmd.Parameters("@pDetail").Value End If lblDetails.Visible = True Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, My.Application.oResManager.GetString("ApplicationName")) Finally Cursor = Cursors.Default End Try
Partager