public void CursorStatement()
{
using (var conn = OpenConnection())
{
conn.ExecuteNonQuery("CREATE TEMP TABLE data (name TEXT)");
using (var t = conn.BeginTransaction())
{
for (var x = 0; x < 5; x++)
conn.ExecuteNonQuery(@"INSERT INTO data (name) VALUES ('X')");
Int32 i = 0;
var command = new NpgsqlCommand("DECLARE TE CURSOR FOR SELECT * FROM DATA", conn);
command.ExecuteNonQuery();
command.CommandText = "FETCH FORWARD 3 IN TE";
var dr = command.ExecuteReader();
while (dr.Read())
i++;
Assert.AreEqual(3, i);
dr.Close();
i = 0;
command.CommandText = "FETCH BACKWARD 1 IN TE";
var dr2 = command.ExecuteReader();
while (dr2.Read())
i++;
Assert.AreEqual(1, i);
dr2.Close();
command.CommandText = "close te;";
command.ExecuteNonQuery();
}
}
}