MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand sqlCommand = new MySqlCommand("DoEnter", connection);
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Add("cookie", MySqlDbType.VarChar, 255);
sqlCommand.Parameters.Add("ip", MySqlDbType.VarChar, 255);
sqlCommand.Parameters["cookie"].Direction = ParameterDirection.Input;
sqlCommand.Parameters["cookie"].Value = sessionId;
sqlCommand.Parameters["ip"].Direction = ParameterDirection.Input;
sqlCommand.Parameters["ip"].Value = ip;
connection.Open();
MySqlDataReader redaer = sqlCommand.ExecuteReader();
Вызов хранимых процедур из MySQL через MySQL Connector .NET
Пытаюсь вызвать хранимую процедуру с двумя параметрами, код вызова следующий:
Код:
Код хранимой процедуры (процедура точно рабочая с квери броузера выполняется как надо):
Код:
DELIMITER $$
DROP PROCEDURE IF EXISTS `flyworker_test2_db`.`DoEnter` $$
CREATE DEFINER="dbdevel"@"%" PROCEDURE "DoEnter"(
in cookie nvarchar(255)
, in ip nvarchar(255)
)
begin
declare login nvarchar(255) default '';
declare is_enter_enable bool default false;
declare system_role nvarchar(255) default '';
declare admin_comment text default '';
declare is_banned bool default false;
declare host_id bigint unsigned default 0;
declare cookie_actual_time int unsigned default 14;
declare session_cookie nvarchar(255) default '';
declare account_id bigint unsigned default 0;
declare ban_date datetime default null;
declare ban_duration int unsigned default null;
set cookie_actual_time = 14;
start transaction;
-- тут много чего делается...
commit;
select
login Login
, is_enter_enable IsEnterEnable
, system_role SystemRole
, is_banned IsBanned
, admin_comment AdminComment
, session_cookie SessionId
, ban_date BanDate
, ban_duration BanDuration;
end $$
DELIMITER ;
DROP PROCEDURE IF EXISTS `flyworker_test2_db`.`DoEnter` $$
CREATE DEFINER="dbdevel"@"%" PROCEDURE "DoEnter"(
in cookie nvarchar(255)
, in ip nvarchar(255)
)
begin
declare login nvarchar(255) default '';
declare is_enter_enable bool default false;
declare system_role nvarchar(255) default '';
declare admin_comment text default '';
declare is_banned bool default false;
declare host_id bigint unsigned default 0;
declare cookie_actual_time int unsigned default 14;
declare session_cookie nvarchar(255) default '';
declare account_id bigint unsigned default 0;
declare ban_date datetime default null;
declare ban_duration int unsigned default null;
set cookie_actual_time = 14;
start transaction;
-- тут много чего делается...
commit;
select
login Login
, is_enter_enable IsEnterEnable
, system_role SystemRole
, is_banned IsBanned
, admin_comment AdminComment
, session_cookie SessionId
, ban_date BanDate
, ban_duration BanDuration;
end $$
DELIMITER ;
И вот при попытке выполнить MySqlDataReader redaer = sqlCommand.ExecuteReader(); каждый раз получаю исключение: Unhandled type encountered
В чём причина не вижу...
--------------
На MySQL-евском форуме куча народу с тем же вопросом и не одного ответ :(