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 :
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
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
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
Quelqu'un aurait-il une solution ?