2012-10-17 2 views
0

(SELECT ...)우리는 어떻게 난에있어에 의해 테이블을 나열 할 수 있습니다 postresql 기능에

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; 

우리가 어떻게 오라클 11g에서 같은 일을 할 수있는 오라클 함수에서 테이블을 나열하려면? 이 부분이 필요합니다.

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

답변

0

명시 적으로 커서 루프 변수를 선언 할 필요가 없습니다. 암시 적으로 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 
+0

난의 종류는 무엇인가? –

+0

나는 그것에 대한 약간의 세부 사항을 추가했습니다 –

+0

덕분에, 나는 우리가 선언 할 필요가 있다고 생각했습니다. –

관련 문제