PDA

View Full Version : ORA-01001 Invalid Cursor!



bientrang
28-12-2004, 18:23
Chào các bạn!
Tôi có một Package viết trong ORA9i, hiện phát sinh lỗi "ORA-01001 Invalid Cursor!" và tôi không biết làm sao để sửa nó.
Nội dung của Package môm na là :

....
- Khai báo Cursor1;
- Khai báo Cursor2;
- Khai báo v1 Cursor1;
- Khai báo v2 Cursor2;
Open Cursor1;
Loop
Fetch Cursor1 into v1;
Exit when Cursor1%notfound;
Open Cursor2;
Loop
Fetch Cursor2 into v2;
Exit when Cursor2%notfound;
-- Tính toán một vài câu lệnh...
End loop;
Close Cursor2;
-- Tính toán một vài câu lệnh...
-- (Update vào bảng...)
End loop;
Close Cursor1;
Commit;
....

tôi đã kiểm tra, hiện lỗi "ORA-01001 Invalid Cursor!" xuất hiện khi gặp câu lệnh OPEN CURSOR2.
Có ai giúp tôi với?
Cám ơn nhiều!

shortcut
03-01-2005, 17:54
Chạy thử câu sql cho cursor2 xem có chạy ngon lành không

yedc2001
03-01-2005, 20:42
Chào các bạn!
Tôi có một Package viết trong ORA9i, hiện phát sinh lỗi "ORA-01001 Invalid Cursor!" và tôi không biết làm sao để sửa nó.
Nội dung của Package môm na là :

....
- Khai báo Cursor1;
- Khai báo Cursor2;
- Khai báo v1 Cursor1;
- Khai báo v2 Cursor2;
Open Cursor1;
Loop
Fetch Cursor1 into v1;
Exit when Cursor1%notfound;
Open Cursor2;
Loop
Fetch Cursor2 into v2;
Exit when Cursor2%notfound;
-- Tính toán một vài câu lệnh...
End loop;
Close Cursor2;
-- Tính toán một vài câu lệnh...
-- (Update vào bảng...)
End loop;
Close Cursor1;
Commit;
....

tôi đã kiểm tra, hiện lỗi "ORA-01001 Invalid Cursor!" xuất hiện khi gặp câu lệnh OPEN CURSOR2.
Có ai giúp tôi với?
Cám ơn nhiều!

Viet thu nhu vay:nho khai bao cho ro rang trong phan DECLARE (phai cung type data)

CREATE OR REPLACE PACKAGE NAME_PACKAGE IS
BEGIN
DECLARE
CURSOR cursor1 IS
SELECT column_name1
FROM table_name1
WHERE column_name1 = value;

CURSOR cursor2 IS
SELECT act_id
FROM table_name2
WHERE column_name2 = value;

BEGIN

FOR ROW_column_name1 IN cursor1 LOOP

FOR ROW_column_name2 IN cursor2 LOOP
END LOOP ;

END LOOP ;

COMMIT;

EXCEPTION
WHEN OTHERS THEN
dbms_output.Put_Line( '**> sortie erreur ' );
ROLLBACK;

END;
END;


Chào các bạn!
Tôi có một Package viết trong ORA9i, hiện phát sinh lỗi "ORA-01001 Invalid Cursor!" và tôi không biết làm sao để sửa nó.
Nội dung của Package môm na là :

....
- Khai báo Cursor1;
- Khai báo Cursor2;
- Khai báo v1 Cursor1;
- Khai báo v2 Cursor2;
Open Cursor1;
Loop
Fetch Cursor1 into v1;
Exit when Cursor1%notfound;
Open Cursor2;
Loop
Fetch Cursor2 into v2;
Exit when Cursor2%notfound;
-- Tính toán một vài câu lệnh...
End loop;
Close Cursor2;
-- Tính toán một vài câu lệnh...
-- (Update vào bảng...)
End loop;
Close Cursor1;
Commit;
....

tôi đã kiểm tra, hiện lỗi "ORA-01001 Invalid Cursor!" xuất hiện khi gặp câu lệnh OPEN CURSOR2.
Có ai giúp tôi với?
Cám ơn nhiều!
Day la cau tra loi cua Oracle: neu duoc ban goi cho toi package, hy vong toi se sua duoc cho ban. yedc2001@yahoo.fr

ORA-01001 invalid cursor

Cause: Either a host language program call specified an invalid cursor or the value of the MAXOPENCURSORS option in the precompiler command were too small. All cursors must be opened using the OOPEN call before being referenced in any of the following calls: SQL, DESCRIBE, NAME, DEFINE, BIND, EXEC, FETCH, and CLOSE. The Logon Data Area (LDA) must be defined by using OLON or OLOGON. If the LDA is not defined, this message is issued for the following calls: OPEN, COM, CON, ROL, and LOGOFF.

Action: Check the erroneous call statement. Specify a correct LDA area or open the cursor as required. If there is no problem with the cursor, it may be necessary to increase the MAXOPENCURSORS option value before precompiling.