2013-02-19 95 views
4

我正在尝试学习Oracle Forms(v6.0)。在一个按钮按下的触发器中,我试图循环遍历数据块中的所有记录。到目前为止,我下面的代码:循环遍历Oracle表格中的所有数据块记录

BEGIN 
    GO_BLOCK('MY_BLOCK'); 
    FIRST_RECORD; 
    LOOP 
    MESSAGE(:MY_BLOCK.DSP_NAME); 
    EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE'; 
    NEXT_RECORD;    
    END LOOP; 
END; 

当我运行的代码显示除了最后一个所有DSP_NAME值。如果我添加:

MESSAGE(:MY_BLOCK.DSP_NAME); 

循环后,显示最后一条记录的DSP_NAME值。为什么它是这样的 - 消息显示在最后一次记录检查之前?什么是循环记录的正确方法?

回答

5

您的循环是正确的。我怀疑最后一条消息显示在窗体底部的状态栏中,而不是弹出窗口。

+0

你是绝对正确的,我想每个迭代都会显示一个消息框并且感到困惑。谢谢! – skujins 2013-02-20 06:36:23

2

为了得到一个弹出窗口使用同一行两次:

MESSAGE(:MY_BLOCK.DSP_NAME); 

MESSAGE(:MY_BLOCK.DSP_NAME); 

你会得到这样的看法。