Problème d'appel à un package Oracle
Bonjour,
J'ai un projet sous VB 2008 et Oracle avec Oracle.DataAccess.
J'ai un package Oracle qui contient plusieurs procédures, dont une interne au package qui est appelé par les autres procédures externes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Package pkg
proc RECHERCHER_PROFIL( ichr_UTILISATEUR IN VARCHAR2,
ochr_PROFIL OUT VARCHAR2,
onum_CODE_RETOUR OUT NUMBER,
ochr_MESSAGE_RETOUR OUT VARCHAR2
)
...
proc OUVRIR_SESSION( ichr_UTILISATEUR IN VARCHAR2,
onum_ID_CONNEXION OUT NUMBER,
ochr_PROFIL OUT VARCHAR2,
onum_CODE_RETOUR OUT NUMBER,
ochr_MESSAGE_RETOUR OUT VARCHAR2
)
... appel de RECHERCHER_PROFIL (ichr_UTILISATEUR IN VARCHAR2,
ochr_PROFIL OUT VARCHAR2)
End package PKG |
Ce package fonctionne parfaitement quand il est appelé directement sous Oracle.
Mais quand j'essaye de l'utiliser sous VB, j'ai le message :
Citation:
ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit (-6502)
Je soupçonne un problème d'appel au package car comme je l'ai dit le package est OK. Voici comment je fais
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Dim cmdProcedure As New Oracle.DataAccess.Client.OracleCommand
With cmdProcedure
.Connection = gcnxMediatec
.CommandType = CommandType.StoredProcedure
.CommandText = "mediatec.pkg_session.ouvrir_session"
.BindByName = True
Dim iparam = .Parameters.Add("ichr_UTILISATEUR", Oracle.DataAccess.Client.OracleDbType.Varchar2, ParameterDirection.Input)
iparam.Value = gstrNomUtilisateur
.Parameters.Add("onum_ID_CONNEXION", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Output)
.Parameters.Add("ochr_PROFIL", Oracle.DataAccess.Client.OracleDbType.Varchar2, ParameterDirection.Output)
.Parameters.Add("onum_CODE_RETOUR", Oracle.DataAccess.Client.OracleDbType.Int32, ParameterDirection.Output)
.Parameters.Add("ochr_MESSAGE_RETOUR", Oracle.DataAccess.Client.OracleDbType.Varchar2, ParameterDirection.Output)
End With
Dim dr As Oracle.DataAccess.Client.OracleDataReader = cmdProcedure.ExecuteReader
' Récupération du code retour
intCodeRetour = dr.GetInt32(3)
MessageBox.Show(CStr(intCodeRetour)) |
Merci de m'aider car je découvre .Net et je suis un peu perdu.
Petite précision: le projet, et notamment le même package Oracle, fonctionne parfaitement sous VB6