ここでカーソルを使用しようとしていますが、選択列のカーソルフィールドにアクセスする方法を知りたいですか?選択クエリでカーソルフィールドを使用する方法
Iは、エラーなし遵守機能
create or replace TYPE "TABLE_TYPE_SAMPLE" AS OBJECT(
ENTITY_NAME VARCHAR2(100)
);
create or replace TYPE "TABLE_SAMPLE" AS TABLE OF TABLE_TYPE_SAMPLE;
CREATE OR REPLACE FUNCTION segmentFields(
txnId VARCHAR2)
RETURN TABLE_SAMPLE
IS
attValue VARCHAR2(20);
curStr VARCHAR2(20);
flexTable TABLE_SAMPLE := TABLE_TYPE_SAMPLE();
CURSOR cur_seg
IS
(SELECT colA
FROM table1 -- (table name has column colA)
WHERE id = txnId
);
BEGIN
FOR cur_recd IN cur_seg
LOOP
curStr := cur_recd.colA;
SELECT curStr into attValue FROM PER_PEOPLE_GROUPS;
flexTable.EXTEND;
flexTable(flexTable.count) := (TABLE_TYPE_SAMPLE(attValue)) ;
END LOOP;
RETURN flexTable;
END;
、以下のように実装しています。正確な行
ORA-06512の要求された数よりも多くのリターンをフェッチ: "SEGMENTFIELDS" で、私は、クエリ
select * from table(segmentFields(480));
の下に実行しようとするが、私は以下のエラー、
ORA-01422を取得します、line 19
01422. 00000 - "exact fetchが要求された行数を超えて返されます"
*原因:exact fetchで指定された数値が、返される行数より少なくなりました。
処置:行のクエリまたは変更数が
を要求した書き換え私はこの実装が間違っているものを、理解したいです。
ありがとうございます。行の
こんにちはAPC、 BULK INTOのあなたのお勧めは機能しました。 タイプsegment_aat 表cur_seg%ROWTYPE; l_columns segments_aat; SELECT curStr BULKはl_columnsからPER_PEOPLE_GROUPSに集約されます。 – SatyajeethT
@SatyajeethT - この回答が役に立ちましたら、正解としてアップしてください。このような行動は、将来の探求者のための資源としてのSOの質を向上させる。 – APC