使用C#调用存储过程

时间:2014-02-06 06:22:19

标签: mysql stored-procedures

这是我的存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_CPC`(IN _B VARCHAR(100),IN _G      VARCHAR(2), IN _R VARCHAR(30), IN _D VARCHAR(30), OUT _C FLOAT, OUT _P FLOAT)

BEGIN       //听到的东西  END $$

DELIMITER;

我通过C#流动代码

调用此存储过程
   DataSet tmpDataSet = new DataSet();

    mCommand.CommandText = "sp_CPC";
         mCommand.CommandType = CommandType.StoredProcedure;
        // mCommand.CommandText = "sp_select_all_employees";
         mCommand.Parameters.AddWithValue("@_B", "bty-23");
         mCommand.Parameters.AddWithValue("@_G", "3");
         mCommand.Parameters.AddWithValue("@_R", "9000");
         mCommand.Parameters.AddWithValue("@_D", "92");

         mCommand.Parameters.Add("@_C",SqlDbType.Float);
        mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
        mCommand.Parameters.Add("@_P", SqlDbType.Float);
         mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;

         try
         {
             mConnection.Open();
             mCommand.ExecuteNonQuery();
             mAdapter.Fill(tmpDataSet);

         }
         catch (Exception ex)
         {
             strErrorInfo = ex.ToString();
         }
         finally
         {
             mConnection.Close();
         }
         return tmpDataSet;


     }

显示以下错误 输入字符串的格式不正确。 我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

我认为你在下一节中做错了

mCommand.Parameters.Add("@_C",SqlDbType.Float);
    mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
    mCommand.Parameters.Add("@_P", SqlDbType.Float);
     mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;

将SqlDbType更改为MySqlDbType

  mCommand.Parameters.Add("@_C",MySqlDbType.Float);
    mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
    mCommand.Parameters.Add("@_P", MySqlDbType.Float);
     mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;