Problème de retour de valeur d'une fonction PL/SQL.

Résolu
Liotild Messages postés 2 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 6 mai 2010 - 4 mai 2010 à 22:32
Liotild Messages postés 2 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 6 mai 2010 - 6 mai 2010 à 17:14
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 mai 2010 à 07:37
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
3
Liotild Messages postés 2 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 6 mai 2010
6 mai 2010 à 17:14
Merci
0
Rejoignez-nous