set serveroutput on;
DECLARE
CURSOR
IS
SELECT SVL_ID
FROM SALES_VEHICLES
WHERE SVL_N = 'some value';--314653;
TYPE SVD_TA IS TABLE OF VSALES%ROWTYPE;
SV SVD_TA;
BEGIN
OPEN VSALES;
FETCH VSALES BULK COLLECT INTO SV LIMIT 1000;
CLOSE VSALES;
IF SV.COUNT() <> 0
THEN
FOR I IN 1..SV.COUNT()
LOOP
UPDATE SALES_VEHICLES
SET SVL_M = 'some value',
SVL_M = SVL_C_N
WHERE SVL_ID = I.SVL_ID;
COMMIT;
END LOOP;
END IF;
EXIT WHEN VSALES%NOTFOUND;
END LOOP;
CLOSE VSALES;
END;
これはデバッグに問題があります。エラーは32行目、5行目です。この問題で私を助けることができれば非常に感謝しています。ORA-06550:閉じるシンボルが発生しました
カーソルを2回クローズしています。一度それを取得した後、そして一番最後に一度。しかし、あなたはまったくこのためにカーソルを使用していますか?プロシージャ全体を単一の 'update'ステートメントに置き換えることができます。**ステートメントは**ロット**より速く、次に行ごとのアプローチは遅くなります。 –
私は、単一の更新ステートメントを使用しないように頼まれました。私はカーソルを1回だけ閉じることを試みましたが、私はまだORA 06550エラーを受けています(記号の終わりに遭遇しました) – ishan
違反はありませんが、それは愚かな要求です。なぜ、ゆっくりとスケーラブルではないのですか? –