2015-09-27 70 views
0

我有以下代碼,但我不知道什麼是關於循環收集並將每個項目添加到Varray的最佳實踐。PL/SQL循環收集並添加到另一個集合查詢

下面是我當前的代碼:

DECLARE 
TYPE student_arraytype IS TABLE OF student%ROWTYPE INDEX BY PLS_INTEGER; 
student_array student_arraytype; 

--varray type 
TYPE student_varraytype IS VARRAY(255) OF NUMBER; 
--use of the type 
student_varray student_varraytype; 
BEGIN 
    SELECT student_id 
    BULK COLLECT INTO student_array 
    FROM student 
    WHERE student_class = 10; 
-- 
FOR i IN student_array.FIRST .. student_array.LAST 
    LOOP 
    student_varray(i) := i; 
    END LOOP; 
END; 

這是通過表收集循環並增加了VARRAY的正確方法是什麼?

如果有人知道替代我欣賞,如果你可以與我分享意見。

親切的問候,

+0

你真的需要將記錄添加到VARRAY嗎? – Ollie

+0

你能解釋一下你試圖完成什麼,因爲你的代碼沒什麼意義嗎?使用嵌套表集合有什麼問題('type student_list是學生%rowtype;'的表)?一般來說,最好的做法是不循環(但有些情況下無法避免)。 – user272735

回答

0

可以批量聚集成多個集合:

SELECT student_id, rownum 
    BULK COLLECT INTO student_array, student_varray 
    FROM student 
    WHERE student_class = 10; 

而且在你的榜樣,你不要的項目添加到VARRAY關聯數組中,該項目只是指數。

相關問題