我想从表的一个属性中读取不同的数据,然后将其插入到数组变量中。考虑的数据是varchar2类型。在此之后,我想在数组中使用这些数据,其中'条件。所以一般来说我喜欢这样做:
TYPE genreArray IS VARRAY(50) OF VARCHAR2(12);
genres genreArray;
BEGIN
FOR a IN (SELECT DISTINCT genre FROM books) LOOP
genres(a) := uniqe GENRE*
*当然这行是错误的,因为我无法在互联网上找到我的问题的答案。
第二个问题是我可以使用类似动态数组的东西来定义程序执行期间的元素数量吗?
我最后的问题是,如果我可以使用另一个选择,如:
SELECT sth WHERE sth AND GENRE=genres(i)
假设' i'是一个for循环变量。
提前感谢您的帮助。
答案 0 :(得分:2)
如果没有特别的理由使用varray
,使用嵌套表会更自然。
DECLARE
TYPE genre_nt IS TABLE OF varchar2(12);
l_genres genre_nt;
BEGIN
SELECT DISTINCT genre
BULK COLLECT INTO l_genres
FROM books;
FOR i IN 1 .. l_genres.count
LOOP
dbms_output.put_line( l_genres(i) );
END LOOP;
END;