2012-03-22 30 views
5

Có thể chạy cho mỗi vòng lặp trên một mảng PL/SQL không?Làm thế nào để viết một vòng lặp FOR EACH trong PL/SQL?

+0

Tránh tạo cấu trúc vòng lặp trong SQL. Bắt đầu suy nghĩ trong các hoạt động dựa trên SET. http://www.simple-talk.com/sql/database-administration/the-road-to-professional-database-development-set-based-thinking/ – Oded

+0

Tài liệu Oracle toàn diện, trực tuyến và miễn phí. Bạn shoudl tìm hiểu cách sử dụng nó để trả lời các câu hỏi cú pháp tầm thường cho chính mình. Đây là phần trên các vòng PL/SQL. http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm#i8296 – APC

+0

Đọc tài liệu cũng sẽ trả lời câu hỏi tiếp theo của bạn http://stackoverflow.com/q/9827581/146325 – APC

Trả lời

10
for i in my_array.first ..my_array.last loop 
    --do_something with my_array(i); 
end loop; 
+0

Dưới đây là một ví dụ khác: http://stackoverflow.com/a/7012775/402322 – ceving

0

Không thể lặp qua các mảng kết hợp với chỉ mục không phải số với vòng lặp FOR. Các giải pháp trên chỉ hoạt động tốt.

-- for-each key in (associative-array) loop ... 
declare 
    type items_type is table of varchar2(32) index by varchar2(32); 
    items items_type; 
begin 
    items('10') := 'item 10'; 
    items('20') := 'item 20'; 
    items('30') := 'item 30'; 
    dbms_output.put_line('items=' || items.count); 

    <<for_each>> declare key varchar2(32); begin loop 
     key := case when key is null then items.first else items.next(key) end; 
     exit when key is null; 
     dbms_output.put_line('item(' || key || ')=' || items(key)); 
     --do something with an item 
    end loop; end for_each; 
end; 
Các vấn đề liên quan