c# - SQL 查询参数名称必须定义

标签 c# mysql sql

你好,我有这个 SQL 查询:

SQL = "SELECT SUM( " + "CASE WHEN rn =1" + "THEN v.FirstAmount" 
      + "WHEN rn =2" + "THEN v.SecondAmount " + "ELSE v.ThirdAmount " + "END ) " 
      + "FROM (" + "SELECT cv. * , @rn := IF( @vi = `Violation ID` , @rn +1, 1 ) AS rn,          
       @vi := `Violation ID` " + "FROM class_violation cv" + "CROSS JOIN (" 
      + "SELECT @rn :=0, @vi := ''" + ")CONST" + "ORDER BY `Violation ID`" + ")cv" 
      + "JOIN violation v ON cv.`Violation ID` = v.`Violation ID` " 
      + "JOIN class_record tr ON cv.`Class No.` = tr.`Class No.` " 
      + "WHERE tr.`Class ID` = '" + where + "'";

我得到这个错误:

MySql.Data.MySqlClient.MySqlException: Fatal Error encountered during
command execution ---> MySql.Data.MySqlClient.MySqlException: Parameter
'@rn' must be defined
 at
MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollection
parameters, MySqlPacket packet, String parmName, Int32 parameterIndex)
    at MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql,
    MySqlParameterCollection parameters,MySqlPacket packet)

我将如何更正我的 SQL 查询并定义参数?

最佳答案

我想我知道如何回答我的问题。在我的连接字符串中,我刚刚添加了 Allow User Variables = True,它现在可以工作了!

关于c# - SQL 查询参数名称必须定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795565/

相关文章:

php - 每个值都显示在新行 HTML 表中

sql - 通过子查询更新,如果子查询没有返回行怎么办?

MYSQL CSV 列检查排除

c# - C#中的Unicode到字符串的转换

C# 不安全代码固定指针作为参数传递

php - 使用Jquery与数据库进行验证

SQL SELECT 外键行在子表中没有行

c# - 样式,模板和ResourceDictionaries

c# - Directory.GetFiles 具有多个过滤器,收集一个字符串数组

php - 有没有一种方法可以仅通过使用notepad++和mysql服务器5.0来使用php和mysql?