Appelé et exécuter une procédure stockée

Résolu
marclas Messages postés 54 Date d'inscription dimanche 9 septembre 2007 Statut Membre Dernière intervention 22 août 2012 - 30 avril 2012 à 06:57
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 30 avril 2012 à 16:15
bonjour,
j ai realiser la procedure stockee suivante
USE [RECLACSR-DB]
GO
/****** Object:  StoredProcedure [dbo].[CreerService]    Script Date: 04/30/2012 05:52:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[CreerService]
-- Add the parameters for the stored procedure here
@SVC_ID int,
@SVC_LIB nvarchar(50),
@SVC_CODE int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    -- Insert statements for procedure here
insert into PAR_SERVICE (SVC_ID ,SVC_LIB  ,SVC_CODE  )
Values (@SVC_ID ,@SVC_LIB,@SVC_CODE )  ;
IF @@ERROR > 0
ROLLBACK
END

elle s execute tres bien en test dans SQL Manager
maintemant je voudrais l'utiliser dasn mon code.
pour cela ja i plusieurs fonction
1- la fonction qui ouvre ma connection
        public static void InitConnexionMobile()
        {
            try
            {
                //instancier l'objet de connexion
                m_Connexion = new SqlConnection(Properties.Settings.Default.cnStr);

                //Ouvrir la connexion à la bd
                m_Connexion.Open();

                //creer la commande et indiquer le type de commande
                m_commande = m_Connexion.CreateCommand();
                m_commande.CommandType = CommandType.StoredProcedure;
            }
            catch (Exception ex)
            {
                //lever une exception et l'ecrire dans le journal d'événement windows
                EventLog.GetEventLogs(ex.Message);
            }

        }

2- la fonction d execution de ma prodecure
        public static void ACTIONExecuteRequeteSansRetour(string chaineSql)
        {
            InitConnexionMobile();
            try
            {
                m_commande.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                // ReSharper disable PossibleIntendedRethrow
                throw ex;
                // ReSharper restore PossibleIntendedRethrow
            }
            finally
            {
                Dispose();
            }
        }

3- losque j apelle ma procedure par un bouton , j ecris
         private void button5_Click(object sender, EventArgs e)
         {
             ExecuteRequete.ACTIONExecuteRequeteSansRetour("CreerService");
         }

"CreerService qui est le nom de ma procedure" elle va s executer en me disant que j ai pas passer mes parametres ce qui est normal
comment je procede pour passer donc mes parametres, car la fonction ACTIONExecuteRequeteSansRetour doit m executer plusieurs procedures bien differentes
Merci
marclas

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
30 avril 2012 à 16:15
Salut

D'abord, petite chose : si tu veux exécuter une procédure stockée, il faut mettre son nom dans le "CommandText" de ta commande :
m_commande.CommandText = chaineSql;


Ensuite, c'est ta commande que tu dois disposer :
if (m_commande != null)
{
    m_commande.Dispose();
}


Enfin, si tu as des paramètres à envoyer à ta procédure stockée, il faut utiliser la propriété Parameters de ta commande :
m_commande.Parameters.Add(new SqlParameter("@monParam", maValeur));


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0