에 의해 명령을 준비했다. 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
반환 값을 가질 수없는 이유가 무엇입니까? 여러분 모두 감사합니다 ..
이
아니처럼 사용한다, 그게 내가 물어했습니다 게 아니에요 ... 내가 곧 길이하여 알아 낸 당신의 대답 주셔서 감사합니다. – MCA
결과를 답으로 게시하십시오. – Pentium10