Attempt to call stored function "dbname"."functionname" w/o specifying a return parameter

c#, mysql, stored-functions, stored-procedures

Solution

You should specify the return parameter with your command like:

cmd.Parameters.Add("@ireturnvalue", MySqlDbType.Int32);
cmd.Parameters["@ireturnvalue"].Direction = ParameterDirection.ReturnValue;

Problem

How can I fix this issue? Am i missing with my code or function code? Here is my C# code ``` public int AddDetails(string business, string clerkid, string serverid, string ticket, string tablenumber, string sourcecard, string recipientcard, DateTime datesaved, string status) { CreateConnection(); int dbId = 0; using(cmd = new MySqlCommand()) { cmd.Connection = cn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "AddDetails"; cmd.Parameters.AddWithValue("m_business", business); cmd.Parameters.AddWithValue("m_clerkid", clerkid); cmd.Parameters.AddWithValue("m_serverid", serverid); cmd.Parameters.AddWithValue("m_ticket", ticket); cmd.Parameters.AddWithValue("m_tablenumber", tablenumber); cmd.Parameters.AddWithValue("m_sourcecard", sourcecard); cmd.Parameters.AddWithValue("m_recipientcard", recipientcard); cmd.Parameters.AddWithValue("m_datesaved", datesaved); cmd.Parameters.AddWithValue("m_status", status); cn.Open(); //dbId = Convert.ToInt32(cmd.LastInsertedId); dbId = int.Parse(cmd.ExecuteScalar().ToString()); //dbId = Convert.ToInt32(cmd.ExecuteNonQuery()); cn.Close(); } return dbId; } ``` And here is my stored function ``` CREATE DEFINER=`root`@`192.168.21.%` FUNCTION `AddDetails`( m_business VARCHAR(1), m_clerkid VARCHAR(45), m_serverid VARCHAR(45), m_ticket VARCHAR(45), m_tablenumber VARCHAR(45), m_sourcecard VARCHAR(45), m_recipientcard VARCHAR(45), m_datesaved DATETIME, m_status VARCHAR(45) ) RETURNS int(11) READS SQL DATA BEGIN INSERT INTO `tbl_merchantwarehouse_transaction` ( `business`, `clerkid`, `serverid`, `ticket`, `tablenumber`, `sourcecardnumber`, `recipientcardnumber`, `datesaved`, `status` ) VALUES( m_business, m_clerkid, m_serverid, m_ticket, m_tablenumber, m_sourcecard, m_recipientcard, m_datesaved, m_status ); RETURN LAST_INSERT_ID(); END ``` Any suggestions, advice / improvements to my code will be much appreciated. thank you :D

Original source