【发布时间】:2020-02-25 08:38:44
【问题描述】:
我正在尝试在我的 c# 程序中使用分配运算符 @a := 0 进行交叉连接(mysql)。但它会抛出错误说
在命令执行期间遇到致命错误。必须定义参数“@a”。
以下查询在我的 mysql 工具中执行良好。但在我的 C# 编程中使用它时无法执行。
string str = "select t1.x1,(@a := @a + t1.x1) x2 from table1 t1 cross join (select @a := 0) params";
MySqlCommand cmd = new MySqlCommand(str, connection);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
输出应该是:
x1 x2
1 1
2 3
3 6
4 10
5 15
我该如何解决这个问题? 或者有解决办法吗?
【问题讨论】:
-
@Diado,我已经用代码示例编辑了我的问题
-
查询代码对于 MySQL 是合法的(除了确定性结果所需的
ORDER BY子句)。所以这是c#问题(错误信息也是c#)。试试string str = "SET @a := 0; select x1,(@a := @a + x1) x2 from table1;"; -
指定 MySQL 版本。也许UDV使用过量?
-
@Akina,我试过了,还是一样的错误。