私はこのようなストアドプロシージャを持っています
BEGIN
insert into `TheSomaProject`.`Projects`
( `ProjectNr`, `MachineName`, `MachineNameEng`, `Type_Id`,
`SerialNr`, `Description`, `Created`, `CompanyId`, `MachineType` )
values
( param_ProjectNr, param_MachineName, param_MachineNameEng, param_TypeId,
param_Serial, param_Description, NOW(), param_CompId, param_MachineType);
SELECT last_insert_id();
END
しかし、返された ID は 0x00000000 のように見えます。C#コードは次のようになります
MySqlDataReader Reader;
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "CALL stp_InsertProject(@param_ProjectNr, @param_MachineName, @param_MachineNameEng, @param_TypeId, @param_Serial, @param_Description, @param_CompId, @param_MachineType);";
cmd.Parameters.AddWithValue("@param_ProjectNr", projectNr);
cmd.Parameters.AddWithValue("@param_MachineName", MachineName);
cmd.Parameters.AddWithValue("@param_MachineNameEng", MachineNameEng);
cmd.Parameters.AddWithValue("@param_TypeId", TypeId);
cmd.Parameters.AddWithValue("@param_Serial", SerialNr);
cmd.Parameters.AddWithValue("@param_Description", Description);
cmd.Parameters.AddWithValue("@param_CompId", CompanyId);
cmd.Parameters.AddWithValue("@param_MachineType", MachineType);
conn.Open();
Reader = cmd.ExecuteReader();
while (Reader.Read())
{
Id = Convert.ToInt32(Reader["last_insert_id()"]);
}
conn.Close();
しかし、phpMyAdmin で同じ stp_InsertProject を使用しようとすると、正しい ID が返されます。