declare
type v_ar is varray(400) of varchar2(4000);
my_ar v_ar := v_ar(sysdate,
sysdate-1,
sysdate-2);
sqlstr varchar2(100);
begin
for i in 1 .. my_ar.count loop
sqlstr:='insert into ddd (sys_date) values(my_ar(i))';
Execute Immediate sqlstr;
commit;
end loop;
end;
--my_ar 标示符无效
type v_ar is varray(400) of varchar2(4000);
my_ar v_ar := v_ar(sysdate,
sysdate-1,
sysdate-2);
sqlstr varchar2(100);
begin
for i in 1 .. my_ar.count loop
sqlstr:='insert into ddd (sys_date) values(my_ar(i))';
Execute Immediate sqlstr;
commit;
end loop;
end;
--my_ar 标示符无效
execute immediate sqlstr using my_ar(i);
type v_ar is varray(400) of varchar2(4000);
my_ar v_ar := v_ar(sysdate,sysdate-1,sysdate-2);
sqlstr varchar2(100);
begin
for i in 1 .. my_ar.count loop
sqlstr:='insert into ddd values('||my_ar(i)||')';
execute immediate sqlstr;
commit;
end loop;
end;插入的值是日期型 运行提示 11Line缺少逗号,
你插入的是一个日期类型,你用动态语句连接一个日期类型,会把日期类型转变成一个字符串类型,这样类型就不匹配了。其实,你根本没必要使用动态sql插入数据直接 insert into dd values(my_ar(i)),不是更方便吗?