1

我有一个应用程序我有几个块它们不是数据库块。但是我用光标中的记录填充它。我有一个循环遍历游标记录并将其显示在表单上的过程。

我希望能够以一种形式显示此光标中的第 n 条记录,我该如何实现这一点。这将被编码为表单上的下一个记录按钮。

Procedure Get_All_Records IS 
Cursor MyRecords IS 

Select 1,2,3,4,5
from mytable

Begin

FOR eachRecord In MyRecords LOOP
  field1 := eachRecord.1;
  field2 := eachRecord.2;
  field3 := eachRecord.3;
  field4 := eachRecord.4;
  field5 := eachRecord.5;

END LOOP;


End;
4

4 回答 4

1

您应该用查询的所有记录填充您的块,就像数据库块一样。您可以使用create_record将记录添加到您的块中。完成后,您可以使用内置插件,如next_record, previous_record,go_record等。

于 2013-02-04T21:34:44.290 回答
1

您可以像这样填充多记录无数据库块;

First_Record;
FOR eachRecord In MyRecords LOOP
  field1 := eachRecord.1;
  field2 := eachRecord.2;
  field3 := eachRecord.3;
  field4 := eachRecord.4;
  field5 := eachRecord.5;

  Next_Record;
END LOOP;

是的,First_Record 和 Next_Record 在没有数据库块的情况下工作正常。

于 2013-02-05T08:31:02.267 回答
1
Procedure Get_All_Records IS

Cursor MyRecords IS 
    Select 1,2,3,4,5
    from mytable;

rowCont number := 0;

开始

FOR eachRecord In MyRecords LOOP

  rowCont := rowCont + 1;

  if rowCont = n then    -- n is you nth record

      field1 := eachRecord.1;
      field2 := eachRecord.2;
      field3 := eachRecord.3;
      field4 := eachRecord.4;
      field5 := eachRecord.5;

  end if;

END LOOP;

结尾;

这可能会帮助你:)

于 2013-03-04T12:48:59.020 回答
0

我知道我之前已经就表单开发人员中的光标给出了答案。我很抱歉我之前的回答,但让我举一个简单的例子来说明它可以做到......

form fields: :user_code :user_name

在表单开发人员中,我们将制作一个按钮并在按下按钮时使用触发器来激活光标代码......

让我们看看按钮中的光标代码

declare
  cursor code_name is
  select user_code, user_name from users;
 begin
   open code_name;
   loop
     fetch code_name into :user_code, :user_name;
     next_record;
     exit when code_name%NOTFOUND;
   end loop;
   close code_name;
 end

让我们查看另一个可以使用 for 循环执行游标的代码

declare 
cursor code_name is 
select user_code, user_name from users;
begin 
  for sel_code_name in code_name
 loop   
:user_code :=sel_code_name.user_code;   
:user_name := sel_code_name.user_name;
next_record;
end loop;
end;

我希望这个例子对于那些想知道如何使游标代码工作的人来说足够清楚......顺便说一下,这被称为显式游标,通常;显式游标是用户定义的,而隐式游标是由数据库自动完成的。

祝你好运

于 2016-09-10T09:55:16.050 回答