我试图从选择无界数组的结果中声明并填充,但我不知道这是否可能。我已经阅读了一些例子,但是无界数组(嵌套或关联)总是充满了一些具体的值。有人可以解释是否有可能以及我在哪里做错了。这是我的代码:
DECLARE
TYPE myArray IS TABLE OF NUMBER(38,0);
my_array myArray;
BEGIN
SELECT RESOURCE_CALCULATE_ID
INTO my_array
FROM RESOURCE_CALCULATE rc
WHERE rc.SERVICE_ID = 'some value'
dbms_output.put_line(my_array.count);
END;
在i100的建议后使用游标解决方案:
DECLARE
CURSOR my_cursor IS
SELECT <COLUMN>
FROM <TABLE>
WHERE <COLUMN> = <VALUE>;
my_cursor_rec my_cursor%ROWTYPE;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_cursor_rec;
EXIT WHEN my_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(my_cursor_rec.<COLUMN>);
INSERT INTO TABLE
SELECT
<COLUMN1>,
<COLUMN2>,
<COLUMN3>
FROM TABLE
WHERE <COLUMN> IN (<LIST_OF_VALUES>)
END LOOP;
END;
答案 0 :(得分:2)
select ... from返回记录集或游标。你不能只选择......进入
尝试这样的事情
DECLARE
TYPE myArray IS TABLE OF NUMBER(38,0);
my_array myArray;
cursor c1 is
SELECT RESOURCE_CALCULATE_ID
FROM RESOURCE_CALCULATE rc
WHERE rc.SERVICE_ID = 'some value';
BEGIN
open c1;
fetch c1 bulk collect into my_array;
close c1;
dbms_output.put_line(my_array.count);
END;