/// <summary>
/// 执行带参数的存储过程,并且返回受影响行数
/// </summary>
/// <param name="procedureName">存储过程名称</param>
/// <param name="ParameterList">参数列表</param>
/// <returns>返回受影响行数</returns>
public int ExeProcedure(string procedureName,ref SqlParameter[] parameterList)
{
try
{
SqlCommand Cmd = new SqlCommand(procedureName,sqlConn);
Cmd.CommandType = CommandType.StoredProcedure;
for(int i=0;i<parameterList.Length;i++)
{
Cmd.Parameters.Add(parameterList[i]);
}
return Cmd.ExecuteNonQuery();
}
catch(Exception ee)
{
throw ee;
}
}

解决方案 »

  1.   

    我说的是调用oracle存储过程,不是sqlserver的,不过还是谢谢!
      

  2.   

    private string sOleDbConnString = "Provider=MSDAORA.1;Data Source=cis;User ID=ams;Password=ams";
    OleDbConnection oConn = new OleDbConnection(sOleDbConnString);
    oConn.Open(); OleDbCommand oComm = new OleDbCommand("AMSSO.TxSystems",oConn);
    oComm.CommandType = CommandType.StoredProcedure; OleDbParameter oParam = new OleDbParameter(); oParam = oComm.Parameters.Add("v_system_no",OleDbType.VarChar,8);
    oParam.Direction = ParameterDirection.Input;
    oParam.Value = txtSystemNo.Text.Trim().ToUpper(); oParam = oComm.Parameters.Add("v_system_name",OleDbType.VarChar,8);
    oParam.Direction = ParameterDirection.Input;
    oParam.Value = txtSystemName.Text.Trim().ToUpper(); oParam = oComm.Parameters.Add("v_system_desc",OleDbType.VarChar,8);
    oParam.Direction = ParameterDirection.Input;
    oParam.Value = txtSystemDesc.Text.Trim().ToUpper(); oParam = oComm.Parameters.Add("v_create_user_id",OleDbType.Numeric,8);
    oParam.Direction = ParameterDirection.Input;
    oParam.Value = 1; oParam = oComm.Parameters.Add("v_isvalid",OleDbType.Numeric,8);
    oParam.Direction = ParameterDirection.Output; oComm.ExecuteNonQuery(); string sReturnValue = oComm.Parameters["v_isvalid"].Value.ToString(); oConn.Close();
    // OracleConnection oraConn = new OracleConnection(sOraConnString);
    // oraConn.Open();
    //
    // OracleCommand oraComm = new OracleCommand("AMSSO.TxSystems",oraConn);
    // oraComm.CommandType = CommandType.StoredProcedure;
    //
    // OracleParameter oraParam = new OracleParameter();
    //
    // oraParam = oraComm.Parameters.Add("v_system_no",OracleType.VarChar,8);
    // oraParam.Direction = ParameterDirection.Input;
    // oraParam.Value = txtSystemNo.Text.Trim().ToUpper();
    //
    // oraParam = oraComm.Parameters.Add("v_system_name",OracleType.VarChar,32);
    // oraParam.Direction = ParameterDirection.Input;
    // oraParam.Value = txtSystemName.Text.Trim().ToUpper();
    //
    // oraParam = oraComm.Parameters.Add("v_system_desc",OracleType.VarChar,64);
    // oraParam.Direction = ParameterDirection.Input;
    // oraParam.Value = txtSystemDesc.Text.Trim().ToUpper();
    //
    // oraParam = oraComm.Parameters.Add("v_create_user_id",OracleType.Number,8);
    // oraParam.Direction = ParameterDirection.Input;
    // oraParam.Value = 0;
    //
    // oraParam = oraComm.Parameters.Add("v_isvalid",OracleType.Number,8);
    // oraParam.Direction = ParameterDirection.Output;
    //
    // oraComm.ExecuteNonQuery();
    //
    // string sReturnValue = oraComm.Parameters["v_isvalid"].Value.ToString();
    //
    // oraConn.Close(); if(sReturnValue.Equals("0"))
    {
    MessageBox.Show("Tx System OK!");
    txtSystemNo.Text="";
    txtSystemName.Text="";
    txtSystemDesc.Text="";
    }
    else
    {
    MessageBox.Show("Tx System NG!");
    }
      

  3.   

    代码是这样的,为何老是出错:
    "ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 ‘过程名’时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Statement ignored\n" string strConn = ConfigurationSettings.AppSettings["dsn"];
    OracleConnection oraConn = new OracleConnection(strConn); OracleCommand oraComm=new OracleCommand("过程名",oraConn);
    oraComm.CommandType=CommandType.StoredProcedure;

    OracleParameter tableid=new OracleParameter("tableid",OracleType.Number);
    tableid.Direction = ParameterDirection.Input;
    tableid.Value=tblIndex; OracleParameter max_id=new OracleParameter("returnid",OracleType.Number);
    max_id.Direction = ParameterDirection.Output;
                               
    oraConn.Open();
    oraComm.ExecuteNonQuery();
    longSingleID=(int)           
    longSingleID=(int) oraComm.Parameters["returnid"].Value;