2014-01-16 69 views
2

我需要列出所有現有序列及其值。我曾嘗試:獲取Firebird中所有序列及其值的列表SQL

SELECT RDB$GENERATOR_NAME, GEN_ID(RDB$GENERATOR_NAME, 0) FROM RDB$GENERATORS; 

SELECT G.RDB$GENERATOR_NAME, GEN_ID(G.RDB$GENERATOR_NAME, 0) FROM RDB$GENERATORS G; 

但這些都不是正確的,因爲GEN_ID()對待第一個參數是一個非常發電機的名字,即試圖訪問到發電機G.RDB$GENERATOR_NAME而不是G.RDB$GENERATOR_NAME價值

回答

5
execute block 
returns (
    out_name char(31), 
    out_value bigint) 
as 
begin 
    for select rdb$generator_name from rdb$generators where rdb$system_flag is distinct from 1 into out_name do 
    begin 
     execute statement 'select gen_id(' || out_name || ', 0) from rdb$database' into out_value; 
     suspend; 
    end 
end