在c#里面怎样调用sqlserver2000 存储过程, 我的储过程已经写好了并且是有返回数值的
在c#里面怎样调用存储过程,并且还要把返回数值去出来?不意思,我只 有10分了:-)

解决方案 »

  1.   

    SqlClientCommand cmd = new SqlClientCommand(存储过程名字,连接);
    cmd.CommandType=存储过程那类型cmd.参数.add执行
      

  2.   

    OracleCommand cmd = new OracleCommand("clientUser_package.sp_ClientUser_Register", conn);
                    cmd.CommandType = CommandType.StoredProcedure;                cmd.Parameters.Clear();
                    cmd.Parameters.Add("pm_UserPassword", OracleType.NVarChar).Value = UserPassword;
                    cmd.Parameters.Add("pm_UserName", OracleType.NVarChar).Value = UserName;
                    cmd.Parameters.Add("pm_Mobile", OracleType.NVarChar).Value = Mobile;
                    cmd.Parameters.Add("pm_Email", OracleType.NVarChar).Value = Email;
                    OracleParameter op = cmd.Parameters.Add("pm_ClientUserID", OracleType.Number);
                    op.Direction = ParameterDirection.Output;                cmd.ExecuteNonQuery();                return long.Parse(op.Value.ToString());//手头只有个Oracle数据库的
      

  3.   

    楼上正解.
    在SQl中只需要把上面的Oracle换成Sql就可以了,
    "op.Direction = ParameterDirection.Output;"这一句就是接收存储过程输出的参数.op的值就是输出的数值
      

  4.   

    手頭上正在寫一個第三層的類,您可以參考./// <summary>
    /// 根據傳入的值(單個值)返回資料
    /// </summary>
    /// <param name="procName">存程過程</param>
    /// <param name="parms">SqlParameter</param>
    /// <param name="Condtion">傳入值</param>
    /// <param name="txtValue"></param>
    /// <param name="intIndex"></param>
    /// <param name="_ActionTable">選擇資料庫</param>
    /// <returns>Ture/False</returns>
    public bool GetInfo(string procName, SqlParameter parms ,string Condtion,string[] txtValue,int[] intIndex,ActionTable _ActionTable)
    {
        private SqlConnection conn;
        private SqlConnection Sysconn;
        private SqlConnection Democonn;    bool isValue = false;    if(_ActionTable == ActionTable.SYS)
    conn = Sysconn;
        else if(_ActionTable == ActionTable.DEMO)
    conn = Democonn;    SqlCommand cmd = new SqlCommand(procName,conn);
        cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Clear();
    cmd.Parameters.Add(parms);
    parms.Value = Condtion; SqlDataReader myDataReader; try
    {
        conn.Open();
        myDataReader = cmd.ExecuteReader();
        isValue = myDataReader.Read();     if(isValue)
        {
    for(int i=0;i<txtValue.Length;i++)
        txtValue[i]= myDataReader[intIndex[i]].ToString();
        }
    }
    catch(System.Exception ex)
    {
        throw ex;
    }
    finally
    {
        if(conn.State == ConnectionState.Open)
    conn.Close();
    } return isValue;
    }