防止PetaPoco将变量识别为输入参数

时间:2012-04-19 20:30:59

标签: mysql sql petapoco

我在C#app中使用PetaPoco.Core 4.0.3来访问MySql数据库。

我正在尝试创建一个使用变量的查询,但我不希望它们被PetaPoco视为输入参数。这是一个无用的查询,只是为了表明我的意思:

SET @num := 0;

SELECT
  @num := @num + 1 AS row_number
FROM
  buzz
LIMIT 100;

当我这样做时,PetaPoco将@num识别为输入参数,并收到以下错误:

  

指定了参数'@num',但没有传递的参数具有此>名称的属性(在'SET @num:= 0; SELECT @num;')

我也试图通过加倍来逃避@角色

SET @@num := 0;

SELECT
  @@num := @@num + 1 AS row_number
FROM
  buzz
LIMIT 100;

但接着我

  

必须定义参数'@num'。

有没有一种方法可以在查询中声明和使用变量,而PetaPoco不会将它们识别为输入参数?

提前致谢

圣保罗

1 个答案:

答案 0 :(得分:3)

我找到了解决方案。问题出在.NET连接器设置中(参见http://blog.tjitjing.com/index.php/2009/05/mysqldatamysqlclientmysqlexception-parameter-id-must-be-defined.html

我必须通过添加属性“允许用户变量”并将其设置为true来更改我的连接字符串。

  

Database = db; Data Source = localhost; User Id = root; Password = pass; Allow User Variables = True

之后,我的查询的第二个版本(@@ variable)开始工作。