2015-03-24 4 views
0

Когда я выполнить запрос из Visual Studio C#MySQL ошибка запроса в C#

insert into nts1.empty_routes_mip 
select @rownum := @rownum + 1, station_from_id, station_to_id, nko_empty_run, cost, nko_min, nko_max, nko_ratio_1, nko_ratio_2 
from nts1.empty_routes, (SELECT @rownum := 0) r 
where id in (select empty_route_id from nts1.empty_runs_made_lp); 

я получаю сообщение об ошибке

MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during command execution. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Parameter '@rownum' must be defined. 
в MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollection parameters, MySqlPacket packet, String parmName, Int32 parameterIndex) 
в MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlParameterCollection parameters, MySqlPacket packet) 
в MySql.Data.MySqlClient.Statement.BindParameters() 
в MySql.Data.MySqlClient.PreparableStatement.Execute() 
в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 
в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 
в MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() 

Может кто-нибудь, пожалуйста, помогите мне, как это исправить?

ответ

0

Из-за ошибки, которую вы опубликовали, я бы сказал, что вы не указали переменную @rownum, и поэтому она не может выполнить запрос. Я не знаю, как вы используете весь свой запрос, но так как его в C#, вероятно, можно использовать что-то вроде этого:

<SQLcommand_name>.parameters.add("@parametername", SqlDbType.<variabletype>).Value = <variable value>; 

вещей между <> должны быть установлены в соответствии с вашей собственной базы данных и т.д.

0

Ваш забытый инициализировать @rownum

insert into nts1.empty_routes_mip 
SET @rownum:=0; /* YOUR MISTAKE*/ 
select @rownum := @rownum + 1, station_from_id, station_to_id, nko_empty_run,cost, nko_min, nko_max, nko_ratio_1, nko_ratio_2 
from nts1.empty_routes, (SELECT @rownum := 0) r 
where id in (select empty_route_id from nts1.empty_runs_made_lp);