我试图创建一个块,它接受来自提示的输入并使用该输入来过滤游标的结果集。请记住,我是新手,所以我可能会犯一个常规错误,并感谢您的帮助。我目前的代码如下。试图在游标创建(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;'后面自行添加'/'。另一种可能性就是查询驱动循环需要很长时间才能执行,但我认为在这种情况下这是值得怀疑的。 –