我正在尝试将随机生成数据插入表中,这里是代码“
begin
FOR x in 1..300 LOOP
Execute immediate 'insert into emp values ('||prac_seq.nextval||','''||'name'||x||''','||trunc(dbms_random.value(1,300))||');';
end loop;
/
table emp
有3列 - id
, name
, idmgr
;
执行立即语句中的上述查询如下所示:
insert into emp values (13,'name25',193);
这个块没有运行 . 当我试图运行单个执行立即声明(f.e.
begin
Execute immediate 'insert into emp values ('||prac_seq.nextval||','''||'name23'','||trunc(dbms_random.value(1,300))||');'
end;
/
ORA给了我一个错误:
立即执行'插入emp值('|| prac_seq.nextval ||','''||'name23'','|| trunc(dbms_random.value(1,300))||');';结束;错误报告:ORA-00911:无效字符ORA-06512:第3行00911. 00000 - “无效字符”*原因:标识符不能以字母和数字以外的任何ASCII字符开头 . 第一个字符后也允许$#_ . 双引号括起来的标识符可以包含除doublequote之外的任何字符 . 替代引号(q'#...#')不能使用空格,制表符或回车符作为分隔符 . 对于所有其他上下文,请参阅SQL语言参考手册 . *行动:
为什么?逗号,引号..一切都经过检查和罚款 .
2 回答
尝试从动态查询中删除
;
.你为什么要使用execute immediate来做这件事 . 尝试按级别连接 .