/***
create procedure test_proc (
start_n integer not null,
end_n integer not null
) returns (
n integer not null
)
external name 'udrcpp_example!test_proc'
engine udr;
***/
FB_UDR_BEGIN_PROCEDURE(test_proc)
FB_UDR_MESSAGE(InMessage,
(FB_INTEGER, start)
(FB_INTEGER, end)
);
FB_UDR_MESSAGE(OutMessage,
(FB_INTEGER, result)
);
FB_UDR_EXECUTE_PROCEDURE
{
out->resultNull = FB_FALSE;
out->result = in->start - 1;
}
FB_UDR_FETCH_PROCEDURE
{
++out->result;
out->resultNull = out->result == 10 ? FB_TRUE : FB_FALSE;
return out->result < in->end;
}
FB_UDR_END_PROCEDURE
-- ok
SQL> select * from test_proc(2, 4);
N
============
2
3
-- should not throw error
SQL> select * from test_proc(7, 10);
N
============
7
8
9
Statement failed, SQLSTATE = 42000
validation error for variable N, value "*** null ***"
-At procedure 'TEST_PROC'