Set cnnConnect = New ADODB.Connection cnnConnect.ConnectionString = "DSN=" & Dsn cnnConnect.Open ' Initialisation de l'objet Set cmdProc = New ADODB.Command cmdProc.ActiveConnection = cnnConnect cmdProc.CommandText = "dbo.ProcName" cmdProc.CommandType = adCmdStoredProc ' Affectation des paramètres cmdProc(1).Value = ParamUn cmdProc(2).Value = ParamDeux ... cmdProc(n).Value = ParamN ' Exécution Set rstRecordset = cmdProc.Execute()
Param = New SqlParameter(`@begin_date', sqldbtype.DateTime)
SP_Command.Parameters.Add( new System.Data.SqlClient.SqlParameter("@begin_date", System.Data.SqlDbType.DateTime));
public DataTable ExecuteStoredProc(string sStoredProc, object[] oParams, bool bWithResultset) { // m_conn et m_connectionStr sont définis ailleurs SqlDataAdapter adap = null; DataTable dt = (bWithResultset ? new DataTable() : null); try { if(m_conn == null) return null; if( m_conn.State != ConnectionState.Open ) m_conn.Open(); adap = new SqlDataAdapter(sStoredProc, m_connectionStr); adap.SelectCommand.CommandType = CommandType.StoredProcedure; adap.SelectCommand.CommandTimeout = 180; int i = 0; string typ = ""; object val = null; string paramName = ""; if (oParams != null && oParams.GetLength(0) > 0) { while (i < oParams.Length) { if (i % 3 == 0) val = oParams[i]; else { typ = Convert.ToString(oParams[i]); i++; paramName = Convert.ToString(oParams[i]); adap.SelectCommand.Parameters.AddWithValue(paramName, val); } i++; } } if (!bWithResultset) adap.SelectCommand.ExecuteNonQuery(); else adap.Fill(dt); return dt; } catch (Exception exc) { throw new Exception(exc.Message); } finally { // si on veut fermer la connexion ici if(m_conn == null) m_conn.Close(); } }
// Les types SQL sont purement informatifs, SqlClient sait faire le mapping entre .net et SQL via Parameters.AddWithValue() // exemple 1 : avec parametres et resultset en retour object[] oParamsStoredProc = new object[] { 999, "Decimal", "@id", "toto", "Varchar", "@str", 0, "Bit", "@debug", Datetime.Now, "Datetime", "@date" }; DataTable dt = ExecuteStoredProc("nomProcedure", oParamsStoredProc, false); //exemple 2 : sans parametre et sans resultset ExecuteStoredProc("nomProcedure", null, false);
EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI Merci d'y penser dans tes prochains messages. |
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfinally { if(m_conn != null) m_conn.Close(); }