提供されたパラメーター値をテーブルの列に挿入するだけの単純な関数があります。
コマンド オブジェクトで ExecuteNonQuery() メソッドを介して関数を実行すると、挿入が行われた場合でも、常に -1 が返されます。
テキストコマンドと同じクエリを実行すると、正しい結果が 1 になります。
私はpostgresql/npgsqlが初めてです。影響を受ける行数を関数にフィードバックさせるトリックはありますか? SQL Server で "set nocount off" のようなものはありますか?
編集: 私が使用しているコード:(npgsql 2.0.11を使用)
var connStr = @"Server=127.0.0.1;Port=5432;User Id=postgres;Password=***;Database=Test;";
using (var conn = new NpgsqlConnection(connStr)) {
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "insert_something";
cmd.CommandType = CommandType.StoredProcedure;
NpgsqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["_id"].Value = 1;
cmd.Parameters["_val"].Value = 2;
var rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine(rowsAffected);
}
}