| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Cursor script hangs in loop
Hi,
Add EXIT condition within the loop.
EXIT WHEN COUNT_CURSOR%NOTFOUND;
DECLARE
JIM_COUNTER NUMBER(10) := 0;
HOLD_REC_KEY NUMBER(10);
CURSOR COUNT_CURSOR IS
SELECT REC_KEY FROM TEST_COUNTER FOR UPDATE OF REC_KEY;
BEGIN
LOOP
OPEN COUNT_CURSOR;
FETCH COUNT_CURSOR INTO HOLD_REC_KEY;
EXIT WHEN COUNT_CURSOR%NOTFOUND; /*ADD HERE */
IF COUNT_CURSOR%FOUND THEN
JIM_COUNTER := JIM_COUNTER + 1;
UPDATE TEST_COUNTER SET REC_KEY = JIM_COUNTER;
ELSE
EXIT;
END IF;
CLOSE COUNT_CURSOR;
END LOOP;
COMMIT;
END;
AMARENDRA
Jim Lake wrote:
> I am trying to get a PL/SQL script to increment a column in a table. The
>
> following script is what I have come-up with, but it runs in a loop, and
>
> is a bear to kill. I have moved the close cursor inside and outside the
> loop, but still the same results. Thanks in advance for any help.
>
> DECLARE
> JIM_COUNTER NUMBER(10) := 0;
> HOLD_REC_KEY NUMBER(10);
> CURSOR COUNT_CURSOR IS
> SELECT REC_KEY FROM TEST_COUNTER FOR UPDATE OF REC_KEY;
> BEGIN
> LOOP
> OPEN COUNT_CURSOR;
> FETCH COUNT_CURSOR INTO HOLD_REC_KEY;
> IF COUNT_CURSOR%FOUND THEN
> JIM_COUNTER := JIM_COUNTER + 1;
> UPDATE TEST_COUNTER SET REC_KEY = JIM_COUNTER;
> ELSE
> EXIT;
> END IF;
> CLOSE COUNT_CURSOR;
> END LOOP;
> COMMIT;
> END;
--
*****************************************************************
AMARENDRA B NETTEM
Oracle Certified DBA (OCP)
Whittman-Hart Inc.,
311 South Wacker Drive, Suite 3500
Chicago, IL 60606.
Residence:
-----------
5039 N E River Road,
Apt. 1A
NORRIDGE, IL 60656
Ph.No. (708) 583 9870 (H)
(312) 913 6758 (W)
E-mail:nettama_at_charlie.cns.iit.edu,
anettem_at_whittman-hart.com
Homepage: http://www.iit.edu/~nettama
****************************************************************
Opinions are mine and do not necessarily reflect those
of Whittman-hart Inc.
Received on Thu Mar 05 1998 - 00:00:00 CST
![]() |
![]() |