procédure oracle message "Erreur d'exécution 3421"
j'ai la fonction suivante :
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
| Function Callproc_oracle(variable1 As Integer, variable2 As Integer, variable3 As Integer, variable4 As String, variable5 As String, variable6 As String, variable7 As String, variable8 As Double) As String
Dim cnn1 As ADODB.Connection
Dim cmdExeproc As ADODB.Command
Set cnn1 = New ADODB.Connection
strCnn = "DSN=xxxx; UID=yy_DBA; PWD=zz;"
cnn1.Open strCnn
Set cmdExeproc = New ADODB.Command
cmdExeproc.ActiveConnection = cnn1
cmdExeproc.CommandText = "{call entree_W9.entree(?,?,?,?,?,?,?,?)}"
cmdExeproc.Parameters(0).Direction = adParamInputOutput
cmdExeproc.Parameters(0).Value = variable1
cmdExeproc.Parameters(1).Direction = adParamInputOutput
cmdExeproc.Parameters(1).Value = variable2
cmdExeproc.Parameters(2).Direction = adParamInputOutput
cmdExeproc.Parameters(2).Value = variable3
cmdExeproc.Parameters(3).Direction = adParamInputOutput
cmdExeproc.Parameters(3).Value = variable4
cmdExeproc.Parameters(4).Direction = adParamInputOutput
cmdExeproc.Parameters(4).Value = variable5
cmdExeproc.Parameters(5).Direction = adParamInputOutput
cmdExeproc.Parameters(5).Value = variable6
cmdExeproc.Parameters(6).Direction = adParamInputOutput
cmdExeproc.Parameters(6).Value = variable7
cmdExeproc.Parameters(7).Direction = adParamInputOutput
cmdExeproc.Parameters(7).Value = variable8
cmdExeproc.Execute
end function |
arrivée à "cmdExeproc.Parameters(5).Value = variable6" le message d'erreur suivant s'affiche :
"erreur d'exécution 3421 l'application utilise une valeur d'un type incorrect pour l'opération en cours"
j'ai trouvé sur le net les informations suivantes :
Citation:
Symptômes
Lorsque vous utilisez la méthode CreateParameter pour passer d'une donnée Binary Large Object (BLOB) à une procédure stockée, vous devez spécifier la Taille maximale des données à être transmis. Cependant lorsque spécifier la taille exacte de données blob, l'erreur suivante est générée lorsque le paramètre passe réellement :
Résolution
Ajoutez un à la valeur de propriété Parameter.Size lorsque transmettre un BLOB.
Dans l'exemple suivant, ImgLen est LOF(<path>\imageFile) :
Set ADOprm = ADOCmd.CreateParameter
(, adLongVarBinary, adParamInput, (ImgLen + 1))
comment faire?