为什么在Firebird中使用此代码块时,v_start
和v_end
变量总是相等?为什么它总是返回null而没有suspend
声明?Firebird中的执行块或存储过程中的时间戳不起作用
execute block
returns (elapsed numeric(9,3),
v_start timestamp,
v_end timestamp)
as
declare variable i integer;
begin
i = 1000000;
v_start = current_timestamp;
while (i > 0) do
i = i - 1;
v_end = current_timestamp;
elapsed = v_end - v_start;
suspend;
end
使用SUSPEND'的'是需要不是100%,但大部分的查询工具将执行它作为一个正常的语句(或可选择的存储过程)而不是作为一个可执行的存储过程;这意味着他们无法获得一排。 –