Problème de retour de valeur d'une fonction PL/SQL. [Résolu]

Signaler
Messages postés
2
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
6 mai 2010
-
Messages postés
2
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
6 mai 2010
-
Bonsoir,

j'ai un souci pour récupérer ma valeur de retour de ma fonction pl/sql :

create or replace
function PersonnelExiste (id_personnel personnel.id_perso%type)
return number 
is trouver number;
begin
  trouver := 0;
  for lesIdPersos in (select id_perso from personnel) loop
    if lesIdPersos.id_perso = id_personnel then
      trouver := 1;
    end if;
  end loop;
  return trouver;
exception 
  when others then
    raise_application_error (-20999,sqlerrm);
end;


Voici mon code C# :
CnOracle.Open();

OracleCommand siPersoExiste = new OracleCommand("personnelexiste", CnOracle);

siPersoExiste.Parameters.Add("id_personnel", OracleDbType.Int32,
                        ParameterDirection.Input).Value = LesCivils[i].id_perso;
siPersoExiste.Parameters.Add("trouver",OracleDbType.Int32,
                        ParameterDirection.ReturnValue);

siPersoExiste.CommandType = CommandType.StoredProcedure;
siPersoExiste.ExecuteNonQuery();

object PersoExiste = siPersoExiste.Parameters["trouver"].Value;
if (Convert.ToInt32(PersoExiste) == 0)
                    { ...


Je passe en paramètre l'identifiant du personnel qui a comme valeur 1, lorsque je teste ma fonction personnelexiste(1) sur Oracle, il me retourne la valeur 1, cependant, avec le code c#, la valeur retournée est 0, ce qui signifie que le perso n'existe pas.

Qqn peut m'éclairer???

Merci

2 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

C'est pas un parametre qu'il faut utiliser
mais un executescalar

bool trouver = (bool)siPersoExiste.ExecuteScalar();



Plus d'info
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx
Messages postés
2
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
6 mai 2010

Merci