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_recordprevious_recordgo_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 に答える