我有一个使用声明游标的SQL文件,我使用@abc运行它,但它没有执行所有语句并等待而不返回命令提示符。声明游标语句后它没有继续。当我尝试在命令模式下运行declare cursor语句时,再次发生同样的问题。我只能在按Ctrl + C后返回SQL priompt。我对SQL世界很新。虽然这可能是一个基本错误,但我无法在任何网站找到解决方案。非常感谢任何帮助。
SQL> DECLARE CURSOR id_cursor IS SELECT id FROM user_names WHERE dept_no = 1002
AND BITAND(flags, 4) = 4 AND time_created BETWEEN 1137974400 AND 1326067199;
2
3
4 ;
5
6
答案 0 :(得分:6)
SQL * Plus中的所有DECLARE
和BEGIN
块都需要在新的空行上以/
结束:
SQL> DECLARE
2 CURSOR c IS SELECT 1 FROM DUAL;
3 BEGIN
4 NULL;
5 END;
6 /
PL/SQL procedure successfully completed.
没有这个/
SQL * Plus无法知道你的语句已经结束(所以在你的例子中等待用户输入)。
答案 1 :(得分:3)
在;
输入/
后输入。这将运行您的PL / SQL语句。但是你给出的样本除了声明光标外什么都不做。然后你必须这样使用它:
declare
cursor ID_CURSOR is
select ID
from USER_NAMES
where DEPT_NO = 1002
and bitand(FLAGS, 4) = 4
and TIME_CREATED between 1137974400 and 1326067199;
begin
for REC in ID_CURSOL loop
<do something with your data>;
end loop;
end;
/