PLS-00201:标识符' TYR'必须申报

时间:2014-12-09 07:40:48

标签: sql cursor

尝试使用一个游标填充两个表时遇到问题。它是Term表和时间表。下面是代码。任何帮助都会非常感激。感谢

PS:我创建了创建序列dw_time_seq;并创建序列dw_term_seq;

declare
  Cursor c_term is

  select temprequestid, termdate, status, tempid, tempcoverid
    from term;

begin
  for c_rec in c_term loop

    insert into dw_term values(
      dw_term_seq.nextval,
      c_rec.temprequestid,
      c_rec.termdate,
      c_rec.status,
      c_rec.tempid,
      c_rec.tempcoverid
    );

    insert into dw_time values(
      dw_time_seq.nextval,
      c_rec.tdate,
      c_rec.tweek,
      c_rec.tmonth,
      c_rec.tyear
    );
  end loop;
end;

2 个答案:

答案 0 :(得分:0)

假设错误为PLS-00201: identifier 'TYEAR' must be declared,请移除c_rec.的{​​{1}}部分。 c_rec.tyear是局部变量,而不是光标中的字段。

答案 1 :(得分:0)

顺便说一句,你得到的错误是 - 与帖子的标题 - PLS-00201: identifier 'TYEAR' must be declared相矛盾。这是因为尚未声明变量tyear。声明就像这样

 declare
   tyear number;

   cursor c_term is ...

此外,阅读c_rec.tyear的部分当然应该只是变量tyear