在sqlplus命令模式下声明游标

时间:2012-01-20 14:15:29

标签: oracle sqlplus

我有一个使用声明游标的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

2 个答案:

答案 0 :(得分:6)

SQL * Plus中的所有DECLAREBEGIN块都需要在新的空行上以/结束:

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;
/
相关问题