私はこの簡単なクエリを持っています:
SELECT MEASURE_ID, MEASURE_VALUE FROM MY_TABLE;
現時点では、いくつかのレコードのみが返されます (将来的には多くのレコードが返される予定です)。
8 265.7
7 559.6
このようなテーブルの DESC は次を提供します。
Name Null Type
------------ -------- ------------
MEASURE_ID NOT NULL NUMBER
MEASURE_VALUE NUMBER(10,1)
次に、適切な PL/SQL 型を定義しました。
CREATE OR REPLACE TYPE HASHMAP_NUM_TYPE_OBJ AS OBJECT (
THE_ID NUMBER,
THE_VALUE NUMBER(10,1)
);
CREATE OR REPLACE TYPE HASHMAP_NUM_TYPE IS TABLE OF HASHMAP_NUM_TYPE_OBJ;
そして、BULK COLLECT を使用してレコードを取得しようとしました:
stats_by_measure HASHMAP_NUM_TYPE;
...
OPEN cursor_1 FOR
SELECT MEASURE_ID, MEASURE_VALUE
FROM MY_TABLE;
...
FETCH cursor_1 BULK COLLECT INTO stats_by_measure;
...
CLOSE cursor_1;
しかし、Oracle -6504 エラーがあります。私は何を間違っていますか?
備考:次のようなコードブロックを使用して、同じカーソル行を行ごとにフェッチすると:
foo NUMBER;
faa NUMBER(10,1);
my_obj HASHMAP_NUM_TYPE_OBJ;
...
LOOP
FETCH cursor_1 INTO foo, faa;
my_obj := HASHMAP_NUM_TYPE_OBJ(foo,faa);
EXIT WHEN cursor_1%NOTFOUND;
END LOOP;
すべてうまくいきます!