无法编译任何游标示例

Posted

技术标签:

【中文标题】无法编译任何游标示例【英文标题】:cant compile any cursor example 【发布时间】:2014-05-11 12:59:56 【问题描述】:

我正在尝试使任何游标示例工作,但无法实现。 IDE:Oracle SQL 开发人员 数据库:10g sql oracle

我已经尝试了这三个示例,但编译效果不佳。有人可以为我提供工作示例吗? 第一个: 编辑:工作!刚刚有“哪里哪里”

DECLARE
   CURSOR person_data_cur
   as
      SELECT *
        FROM personal_data
       WHERE  where name='Karol';
BEGIN
   FOR person_data
   IN person_data_cur
   LOOP
      DBMS_OUTPUT.put_line (
         person_data.surname);
   END LOOP;
END;

还有这个:

DECLARE my_cursor1 CURSOR FOR
SELECT  name, surname
    FROM personal_data
    WHERE name='Karol';

^错误:

Error report -
ORA-06550: row 1, column 27:
PLS-00103: found symbol "FOR" when expected one of following:

   := . ( @ % ; not null range default character
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

甚至这个: 编辑:这个没问题,只是我的 IDE 忽略了前两行,并执行了其他行......但我想没关系,因为它不在任何块或过程中

CURSOR c1
IS
  SELECT course_number
  FROM courses_tbl
  WHERE course_name = name_in;

【问题讨论】:

哦,愚蠢的我,我在第 6 行 example1 的 WHERE WHERE --->works.... :D 但仍然不确定如何做其他 2 个示例 如果您也发布错误会更容易。 您有 3 个游标声明 - 其中一个有效,两个无效。那么如何检查其他两个定义的不同之处呢? (提示:FORIS 【参考方案1】:

对于第二个示例:您的语法不正确。 光标的伪代码是:

        Declare
             Cursor Cursor_name
             is
               select * from table where <Conditions>;
          Begin
            For cur_Rec in cursor_name
               Loop
                   <what you want to do>

               End Loop;
          End;

对于第三个例子,我认为name_in是一个输入参数,请将语法更正为:

      CURSOR c1 (name_in VARCHAR2)
      IS
        SELECT course_number
        FROM courses_tbl
        WHERE course_name = name_in;

详情请咨询Cursor Declaration

【讨论】:

以上是关于无法编译任何游标示例的主要内容,如果未能解决你的问题,请参考以下文章

在 plsql 块中编译游标时出错

无法在 dev-c++ 上编译程序?

“INSERT INTO ... FETCH ALL FROM ...”无法编译

闪烁 - 无法编译诱饵示例

mysql sp 练习游标和预编译

无法编译 ODEINT 包中的示例