[10g] Exécution procédure stockée depuis C#
Bonjour, j'ai un petit problème avec l'exécution d'une procédure stockée dans ORACLE que je veux faire fonctionner avec C#.
voilà le code de ma Procédure stockée :
Code:
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 29
| create or replace
PROCEDURE MODIFIE_FOURNISSEUR(IDFOURNISSEUR IN FOURNISSEURS.PK_FOURNISSEUR_ID%TYPE, P_SOCIETE IN FOURNISSEURS.SOCIETE%TYPE,
P_CONTACT IN FOURNISSEURS.CONTACT%TYPE, P_TEL IN FOURNISSEURS.TEL%TYPE, P_RUEETNUM IN FOURNISSEURS.RUE_NUM%TYPE,
P_Ville IN FOURNISSEURS.VILLE%TYPE, P_CodePostal IN FOURNISSEURS.CP%TYPE, ErrorMessage out varchar2)
IS
FOURNISSEUREXISTE INTEGER;
FournisseurNOEXISTANT EXCEPTION;
BEGIN
Select count(*) into fournisseurexiste from fournisseurs where FOURNISSEURS.PK_FOURNISSEUR_ID=IDFOURNISSEUR;
IF FOURNISSEUREXISTE>0 THEN
UPDATE FOURNISSEURS
SET SOCIETE = P_SOCIETE,
CONTACT = P_CONTACT,
TEL = P_TEL,
RUE_NUM = P_RUEETNUM,
VILLE = P_VILLE,
CP = P_CODEPOSTAL
WHERE PK_FOURNISSEUR_ID = IDFOURNISSEUR;
ErrorMessage := 'La mise à jour s''est faite correctement';
ELSE
RAISE FournisseurNoExistant;
END IF;
EXCEPTION
WHEN FOURNISSEURNOEXISTANT THEN
ErrorMessage := 'Le fournisseur ne figure pas dans la DB';
END; |
et j'essaye d’exécuter ça avec le code suivant :
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| static public bool modifierFournisseur(int ID, string Societe, string contact, string tel, string rue_num, string ville, string CodePostal, ref string ErrMsg)
{
bool retVal = false;
int nombreDeModif;
OracleConnection con = Utilitaire.getConnection();
OracleCommand commandeModif = new OracleCommand();
commandeModif.CommandType = System.Data.CommandType.StoredProcedure;
commandeModif.Connection = con;
commandeModif.CommandText = "MODIFIE_FOURNISSEUR";
OracleParameter param1 = new OracleParameter(":1", OracleDbType.Int32);
OracleParameter param2 = new OracleParameter(":2", OracleDbType.Varchar2);
OracleParameter param3 = new OracleParameter(":3", OracleDbType.Varchar2);
OracleParameter param4 = new OracleParameter(":4", OracleDbType.Varchar2);
OracleParameter param5 = new OracleParameter(":5", OracleDbType.Varchar2);
OracleParameter param6 = new OracleParameter(":6", OracleDbType.Varchar2);
OracleParameter param7 = new OracleParameter(":7", OracleDbType.Varchar2);
OracleParameter param8 = new OracleParameter(":2", OracleDbType.Varchar2, System.Data.ParameterDirection.Output);
param8.OracleDbType = OracleDbType.Varchar2;
param1.Value = ID;
param2.Value = Societe;
param3.Value = contact;
param4.Value = tel;
param5.Value = rue_num;
param6.Value = ville;
param7.Value = CodePostal;
param8.Value = ErrMsg;
commandeModif.Parameters.Add(param1);
commandeModif.Parameters.Add(param2);
commandeModif.Parameters.Add(param3);
commandeModif.Parameters.Add(param4);
commandeModif.Parameters.Add(param5);
commandeModif.Parameters.Add(param6);
commandeModif.Parameters.Add(param7);
commandeModif.Parameters.Add(param8);
try
{
con.Open();
nombreDeModif = (int) commandeModif.ExecuteNonQuery();
if (nombreDeModif > 0)
retVal = true;
else
retVal = false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
con.Close();
}
return retVal;
} |
à savoir que je travail en 4 couches (PL, DAL, BLL et BO)
Le problème c'est que je ne sais pas comment exécuter ma procédure via le C#, le code que j'ai mis ne m'exécute pas ma procédure lorsque je tente une modification. Est-ce que le fait de mettre un paramètre de type ref dans ma méthode C# ça va passer avec mon paramètre OUT de ma procédure stockée ?
voilà j'espère que je suis déjà au bon endroit pour poser ma question et j'espère aussi avoir été assez clair dans ma question :s
Merci d'avance pour les réponses.