0

에 의해 명령을 준비했다. Prearped MySqlCommand를 통해이 저장된 함수를 호출하려고합니다. 내가 저장 함수를 호출하고 그것을 준비 할 수있는 mysql 명령을 만듭니다. Aftwerwards 필자는 매개 변수 값을 설정하고이 저장된 함수를 호출합니다. 함수는 오류없이 작동하지만 반환 값은 얻을 수 없습니다. 반환 가치는 어떻게 가질 수 있습니까?전화와 MySQL을 사용 저장 MySQL의 함수에서 반환 값을 얻을 내가 다시, 그래서 여기가 내 첫 번째 게시물이 충분히 밝혀지지 않았다 생각 C#을

이것은 성능상의 문제는 아니며, 시작시 모든 명령문을 준비하는 구현이 있습니다. 이제이 펑션을 저장 프로 시저 및 함수에 추가하고 싶습니다.

commandString = new MBCommandString(); 
      commandString.commandName = "RenameCharacter"; 
      commandString.commandString = "RenameCharacter"; 
              /*@"Update characters set name = ?3 
                where characterId = ?2 
                  and playerId = (Select playerId from players where lastKey = ?1)";*/ 
      commandString.parameters = new MySqlParameter[5]; 
      commandString.parameters[1] = new MySqlParameter("pUserKey", MySqlDbType.VarChar); 
      commandString.parameters[2] = new MySqlParameter("pPlayerId", MySqlDbType.Int32); 
      commandString.parameters[3] = new MySqlParameter("pCharacterId", MySqlDbType.Int32); 
      commandString.parameters[4] = new MySqlParameter("pCharacterName", MySqlDbType.VarChar); 
      commandString.parameters[0] = new MySqlParameter("@returnValue", MySqlDbType.Int32); 
      commandString.parameters[0].Direction = ParameterDirection.ReturnValue; 

      commandString.type = MBCommandType.MBCT_Function; 
      commandList.Add(commandString); 

그럼 내가 준비 :

는 MySQL의 저장 함수를 호출하기 위해
FUNCTION `RenameCharacter`(pUserKey varchar(50), pPlayerId int, 
pCharacterId int, pCharacterName varchar(50)) 
RETURNS int(11) 

먼저 나는 mysqlcommand를 만들 : 여기


내 저장 기능입니다
MBCommand cmd = new MBCommand(); 
      cmd.command = new MySqlCommand(cs.commandString, connection);   
      cmd.command.Parameters.AddRange(cs.parameters); 

      if (cs.type == MBCommandType.MBCT_Function) 
      { 
       cmd.command.CommandType = CommandType.StoredProcedure; 
      } 

      cmd.command.Prepare(); 
      cmd.type = cs.type; 
      commands.Add(cs.commandName, cmd); 

그리고 저는 이것을 클래스 C#, 작동하지만 반환 값을 얻을 수 없습니다.

string key = reader.ReadString(); 
         int playerId = reader.ReadInt32(); 
         int characterId = reader.ReadInt32(); 
         string characterNewName = reader.ReadString(); 

         MBExecuteSingle execute = new MBExecuteSingle(); 
         execute.commandName = "RenameCharacter"; 

         execute.values = new object[5]; 
         execute.values[1] = key; 
         execute.values[2] = playerId; 
         execute.values[3] = characterId; 
         execute.values[4] = characterNewName; 
         execute.values[0] = new Int32(); 
         execute.values[0] = 4; //dummy initial value 

반환 값을 가질 수없는 이유가 무엇입니까? 여러분 모두 감사합니다 ..

답변

0

당신은 선택

select RenameCharacter(1,2,3,4); 
+0

아니처럼 사용한다, 그게 내가 물어했습니다 게 아니에요 ... 내가 곧 길이하여 알아 낸 당신의 대답 주셔서 감사합니다. – MCA

+0

결과를 답으로 게시하십시오. – Pentium10