Parameterの値を変えて複数回commandを実行したい場合、一度Removeする必要があります。


var cmd = new NpgsqlCommand()
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM test(@day_week)";
cmd.Parameters.AddWithValue("day_week", 0);
using (var reader = cmd.ExecuteReader())
  {
     reader.Read();
     //処理
  }

cmd.Parameters.Remove("day_week");
cmd.Parameters.AddWithValue("day_week", 1);
using (var reader = cmd.ExecuteReader())
  {
     reader.Read();
     //処理
  }