我跟随声明变量的匿名阻止:
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.
如何修复我的代码?
答案 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
是一个包含两列的表,第一列是数字,第二列是字符串。作为一种好的做法,您总是希望明确列出要插入的列 - 这会使您的代码更加自我记录,这意味着如果有人在以后向表中添加新列,您将无法在以后创建错误有默认值。