pl / sql使用for循环变量插入多行,看作未声明

时间:2015-03-16 22:45:41

标签: oracle plsql

我跟随声明变量的匿名阻止:

declare
tst number(9) :=0;
begin
for vcnt in 1..1000
loop
tst := vcnt;
insert into samp_tab values(:tst,'a');
end loop;
end;

我希望通过在插入值中使用带有计数器值的变量,在循环的每个循环中将计数器的表值插入到行中。当我执行代码时,Oracle返回:

 Bind Variable "tst" is NOT DECLARED
 Anonymous block completed.

如何修复我的代码?

1 个答案:

答案 0 :(得分:2)

如果您想引用局部变量,请不要在其前面添加冒号

declare
  tst number(9) :=0;
begin
  for vcnt in 1..1000
  loop
    tst := vcnt;
    insert into samp_tab values(tst,'a');
  end loop;
end;

这假设samp_tab是一个包含两列的表,第一列是数字,第二列是字符串。作为一种好的做法,您总是希望明确列出要插入的列 - 这会使您的代码更加自我记录,这意味着如果有人在以后向表中添加新列,您将无法在以后创建错误有默认值。