Nella documentazione here, il seguente esempio di codice è dato per l'utilizzo di un cursor
:Cursori Firebird - Perché dovresti usare uno
execute block
returns (
relation char(31),
sysflag int)
as
declare cur cursor for
(select rdb$relation_name, rdb$system_flag from rdb$relations);
begin
open cur;
while (1=1) do
begin
fetch cur into relation, sysflag;
if (row_count = 0) then leave;
suspend;
end
close cur;
end
Ma questo può essere fatto anche nel modo seguente:
execute block
returns (
relation char(31),
sysflag int)
as
begin
for select rdb$relation_name, rdb$system_flag
from rdb$relations
into relation, sysflag
do begin
suspend;
end
end
Quindi, perché dovrei volerne usare uno? In definitiva l'esempio sopra non ha nemmeno bisogno di execlute block
in quanto è solo una semplice istruzione select. Quindi suppongo che l'esempio sia troppo semplice per mostrare un vantaggio di questo.
La versione corrente della documentazione contiene un esempio un po 'più complesso: http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-coding.html#fblangref25-psql- declare-cursor –