Bonjour, dans le cadre de mon stage j'ai effectuer une modification d'un module je ne vais pas m'attarder sur la situation.

Lorsque je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
myConnexion.Open();
                OracleCommand cmd = myConnexion.CreateCommand();
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = "SELECT IDENTIFIER FROM DXCNT_PARAM_PROCESS WHERE NIAPPLICATION ='"+p_niapplication+"' AND QUEUE = '"+p_queue+"'";
                OracleDataReader reader = cmd.ExecuteReader();
 
                if (reader.Read())
                {
                    identifier = int.Parse(reader.GetValue(0).ToString());
;
 
                }
Aucun souci, fonctionne très bien, seulement l'entreprise veut des Package et non des requête en dur.
c'est pourquoi j'ai créer ce Package :

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
 
FUNCTION F_SELECT (p_niapplication IN DXCONNECT.DXCNT_PARAM_PROCESS.NIAPPLICATION%TYPE,
                   p_queue IN DXCONNECT.DXCNT_PARAM_PROCESS.QUEUE%TYPE)
RETURN INTEGER
IS
    result      INTEGER := 0;
BEGIN
 
SELECT IDENTIFIER INTO result FROM DXCNT_PARAM_PROCESS WHERE QUEUE = p_queue AND NIAPPLICATION = p_niapplication;
 
RETURN result;
 
 
EXCEPTION
    WHEN OTHERS THEN
        RAISE;
        RETURN result; 
END F_SELECT;
Il fonctionne correctement sur oracle et lorsque je le met à jours dans le C# je n'arrive pas à récupérer la valeur retourner par mon Package il part en exception.

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
 
                myConnexion.Open();
                OracleCommand cmd = myConnexion.CreateCommand();
 
                cmd.CommandText = "DXCONNECT.PCK_DB_DXCNT_PARAM_PROCESS.F_SELECT";
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
 
 
 
                OracleParameter prmNiapplication = new OracleParameter("p_niapplication", OracleType.Number, 12);
                prmNiapplication.Direction = ParameterDirection.Input;
                prmNiapplication.Value = p_niapplication;
                cmd.Parameters.Add(prmNiapplication);
 
 
                OracleParameter prmQueue = new OracleParameter("p_queue", OracleType.VarChar, 64);
                prmQueue.Direction = ParameterDirection.Input;
                prmQueue.Value = p_queue;
                cmd.Parameters.Add( prmQueue);
 
                OracleDataReader reader = cmd.ExecuteReader();
 
                if (reader.Read())
                {
                    identifier = int.Parse(reader.GetValue(0).ToString());
 
 
                }
Doit-je récupérer le return du Package d'une autre manière ou j'ai oublié quelque chose? En tous cas l’exécution d'un Package insert par exemple fonctionne très bien mais pour récupérer les valeurs d'un select la plus rien ne va :p

Si quelqu’un aurait une idée merci d'avance
Cordialement