2012-05-29 29 views
16

Có cách nào để làm một "cho mỗi" trong oracle, một cái gì đó như thế này:Vòng qua giá trị tiền được xác định

begin 
    for VAR in {1,2,5} 
    loop 
    dbms_output.put_line('The value: '||VAR); 
    end loop; 
end; 

Tôi biết bạn có thể làm điều gì đó như:

begin 
    for VAR in 1..5 
    loop 
    if VAR in(1,3,5) then 
     dbms_output.put_line('The value: '||VAR); 
    end if; 
    end loop; 
end; 

Nhưng isn Có cách nào để làm điều này một cách đẹp hơn? Xác định một tập hợp các giá trị và lặp qua chúng?

Cảm ơn.

+0

Đặt danh sách giá trị trong bảng. Bây giờ bạn có thể lặp qua các giá trị trong bảng bằng cách sử dụng con trỏ. – Rene

Trả lời

28

Bạn có thể làm điều này, mặc dù có lẽ không như slick như bạn muốn:

declare 
    type nt_type is table of number; 
    nt nt_type := nt_type (1, 3, 5); 
begin 
    for i in 1..nt.count loop 
    dbms_output.put_line(nt(i)); 
    end loop; 
end; 

Nếu bạn tạo một loại trong cơ sở dữ liệu:

create type number_table is table of number; 

sau đó bạn có thể làm điều này:

begin 
    for r in (select column_value as var from table (number_table (1, 3, 5))) loop 
    dbms_output.put_line(r.var); 
    end loop; 
end; 
+6

Trên thực tế bạn không cần phải tạo một loại trong DB, bạn có thể làm 'cho r in (chọn column_value từ bảng (sys.dbms_debug_vc2coll (1,3,5))) loop' –

Các vấn đề liên quan