我試圖創建一個塊,它接受來自提示的輸入並使用該輸入來過濾遊標的結果集。請記住,我是新手,所以我可能會犯一個常規錯誤,並感謝您的幫助。我目前的代碼如下。試圖在遊標創建(PL/SQL)中使用where語句
Set serveroutput on
DECLARE
ACCEPT a PROMPT 「Please Enter a Date, eg. Format - 01 or 30"
datev char
datev := &a;
CURSOR cur_day_cursor IS
SELECT Arrival_Date Adate
FROM FLIGHT
WHERE TO_CHAR(Arrival_Date, ‘DD’) = datev;
cur_day_cursor_var cur_day_cursor%ROWTYPE;
BEGIN
OPEN Cur_day_cursor;
LOOP
Fetch Cur_day_cursor
INTO cur_day_cursor_var;
EXIT WHEN cur_day_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (cur_day_cursor_var.Adate);
END LOOP;
IF cur_day_cursor%ISOPEN THEN
CLOSE cur_day_cursor;
END IF;
END;
的where語句引起我的錯誤,所以我在想,我可能不得不讓光標收集的所有數據並顯示,當然後過濾,但我不知道如果我甚至可以這樣做。
我一直在線路接收ERROR 9錯誤: - ORA-06550:第9行,第1列: PLS-00103:出現符號 「WHERE」 在需要下列之一時: 開始功能編譯程序亞型鍵入 當前光標刪除 之前存在
對不起,「接受提示」請輸入日期,例如格式 - 01或30「部分代碼,放在我的初始代碼的聲明部分之前。爲了讓代碼運行,我只是搞了一些東西。 我已經嘗試了建議的解決方案,但我運行到哪裏腳本輸入提示的變量(DATEV) 截圖之後掛一個問題 - http://i.imgur.com/kFCsV5Z.jpg –
您發佈代碼在PL/SQL塊之後沒有斜線,這是實際執行它所需的。所以可能只是SQLPlus正在等待更多的輸入。在最後的'END;'後面自行添加'/'。另一種可能性就是查詢驅動循環需要很長時間才能執行,但我認爲在這種情況下這是值得懷疑的。 –