0

postresql関数では、FOR i IN(SELECT ...)でテーブルを一覧表示できます。

CREATE OR REPLACE FUNCTION f()
  RETURNS trigger AS
$BODY$
DECLARE
table_to_row RECORD;
BEGIN
<<for_loop>>
FOR table_to_row IN SELECT id FROM table1
LOOP
    //do something
END LOOP for_loop;
RETURN NULL;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

Oracle 11gでそのようなことをどのように行うことができますか?この部分が必要です

FOR table_to_row IN SELECT id FROM table1
LOOP
   //do something
END LOOP;
4

1 に答える 1

0

Oracleでは、カーソルループ変数を明示的に宣言する必要はありません。暗黙的にtable_name%rowtypeデータ型になります。

次に例を示します。

For i in (select col_1, .., col_n
            from your_table)
loop
  -- do something
end loop;

デモンストレーション:

create table test_1(col1 varchar2(11));

Table created

SQL> insert into test_1(col1) values('data_1');

1 row inserted

SQL> insert into test_1(col1) values('data_2');

1 row inserted

SQL> insert into test_1(col1) values('data_3');

1 row inserted

SQL> commit;

Commit complete

SQL> set serveroutput on;

SQL>begin
  2    for i in (select col1 from test_1)
  3    loop
  4      dbms_output.put_line(i.col1);
  5    end loop;
  6  end;
  7  /

data_1
data_2
data_3

PL/SQL procedure successfully completed
于 2012-10-17T10:13:35.007 に答える