当我从visual studio 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 :(得分:0)
根据您发布的错误,我会说您没有定义变量@rownum,因此无法执行查询。我不知道你是如何使用整个查询的,但是因为它在c#中你可能会使用这样的东西:
<SQLcommand_name>.parameters.add("@parametername", SqlDbType.<variabletype>).Value = <variable value>;
&lt;&gt;之间的事情将根据您自己的数据库等进行设置。
答案 1 :(得分: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);