5

MySql データベースにアクセスするために、C# アプリで PetaPoco.Core 4.0.3 を使用しています。

変数を使用するクエリを作成しようとしていますが、PetaPoco で変数を入力パラメーターとして処理したくありません。私が何を意味するかを示すためだけに、役に立たないクエリを次に示します。

SET @num := 0;

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

これを行うと、PetaPoco は @num を入力パラメーターとして認識し、次のエラーが表示されます。

パラメーター '@num' が指定されましたが、渡された引数のいずれにもこの名前のプロパティがありません ('SET @num := 0; SELECT @num;')

また、@文字を2倍にしてエスケープしようとしました

SET @@num := 0;

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

しかし、私は受け取ります

パラメータ '@num' を定義する必要があります。

PetaPoco が変数を入力パラメーターとして認識せずに、クエリで変数を宣言して使用する方法はありますか?

前もって感謝します

パウロ

4

1 に答える 1

5

解決策を見つけました。問題は .NET コネクタの設定にありました ( http://blog.tjitjing.com/index.php/2009/05/mysqldatamysqlclientmysqlexception-parameter-id-must-be-defined.htmlを参照) 。

プロパティ「Allow User Variables」を追加してtrueに設定して、接続文字列を変更する必要がありました。

データベース=db;データ ソース=localhost;ユーザー ID=root;パスワード=pass;ユーザー変数を許可する=True

その後、クエリの 2 番目のバージョン (@@variable) が機能し始めました。

于 2012-04-20T12:49:23.957 に答える