public IEnumerable<SequenceInfo> GetSequences(FbConnection con)
{
using (var command = con.CreateCommand())
{
command.CommandText =
"execute block " +
"returns(GeneratorName char(31), CurrentValue bigint) " +
"as " +
"begin " +
"for select rdb$generator_name from rdb$generators where rdb$system_flag = 0 into GeneratorName do " +
"begin " +
"execute statement 'select gen_id(' || GeneratorName || ', 0) from rdb$database' into CurrentValue; " +
"suspend; " +
"end " +
"end; ";
var reader = command.ExecuteReader();
while (reader.Read())
{
var name = (string)reader["GeneratorName"];
var value = (long)reader["CurrentValue"];
yield return new SequenceInfo(name, value);
}
}
}