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.
Ce package fonctionne parfaitement quand il est appelé directement sous Oracle.
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 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
Mais quand j'essaye de l'utiliser sous VB, j'ai le message :
Je soupçonne un problème d'appel au package car comme je l'ai dit le package est OK. Voici comment je faisORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit (-6502)
Merci de m'aider car je découvre .Net et je suis un peu perdu.
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 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))
Petite précision: le projet, et notamment le même package Oracle, fonctionne parfaitement sous VB6
Partager