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

Messages postés
2
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
6 mai 2010
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nhervagault
Messages postés
2
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
6 mai 2010
0
Merci
Merci
Commenter la réponse de Liotild