2013-04-01 4 views
2

이 문제를 어떻게 해결할 수 있습니까? 내 코드 또는 기능 코드가 누락 되었습니까?반환 된 매개 변수를 지정하지 않고 "dbname". "functionname"저장된 함수를 호출하려고 시도했습니다.

여기 내 C# 코드

여기
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; 
    } 

및 제안, 조언/내 코드에 개선이 많이 주시면 감사합니다 내 저장 기능

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 

이다. 감사합니다 : D

답변

6

당신은 같은 명령으로 반환 매개 변수를 지정해야합니다 cheol.lui @

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

, cmd.ExecuteScalar''후, ['INT DBID = Convert.ToInt32 (cmd.Parameters 시도 "@ireturnvalue"]. 값); – Habib