0
當運行下面的代碼時,我得到一個ORA-01001:無效光標不知道發生了什麼,我將它轉換爲一個過程並開始發生;Wierd PL SQL無效光標
CREATE OR REPLACE PROCEDURE p_student_from_class_list (p_stu_id IN NUMBER)
IS
--Declaring a variable --
v_date date;
--Creating a Cursor to find data from using the p_stu_id paramenter--
CURSOR enrollments_cursor IS
SELECT enrollment_date, stu_id, class_id, status
FROM enrollments
WHERE stu_id = p_stu_id;
BEGIN
/*Changing the date so the code looks for the classes for the student
which was entered in the bind variable above for the last 10 years*/
v_date := add_months(SYSDATE, -120);
FOR v_enrollment_record IN enrollments_cursor
LOOP
--Displays the student's enrollment date, class ID and Current Status for each class >they taken in last 10 years,from the value which was entered in the bind variable--
IF v_enrollment_record.enrollment_date
between v_date AND SYSDATE THEN
DBMS_OUTPUT.PUT_LINE('Enrollment Date: '
||v_enrollment_record.enrollment_date
||' Class ID: '||v_enrollment_record.class_id
||' Status: '||v_enrollment_record.status);
END IF;
END LOOP;
--Closing the cursor --
CLOSE enrollments_cursor;
--Application Express processes the statement--
COMMIT;
--Telling Application Express the procedure has finished--
END p_student_from_class_list;
--Anonymous Block to run the Procedure--
BEGIN
p_student_from_class_list(--Student ID--);
END;
正如我所說的代碼,當它在一個過程,但由於某種原因,創建它作爲一個過程,現在給出了這樣的錯誤是得到了工作。我一直在試圖解決這個問題。
哇完全沒有看到!非常感謝你,你的救星= D – Phyore 2013-05-03 11:29:04
沒問題。順便提一句,您可以將'v_date'作爲[光標參數](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#CIHFAHFE)並將其用於光標的' WHERE條款;那麼你不需要循環內的IF。 – 2013-05-03 11:34:55
謝謝你的信息:)由於被要求輸入他們的問題,這些問題被設置在問題中。不幸的是,日期並沒有被告知輸入〜 – Phyore 2013-05-03 15:15:31