首页 文章

Oracle,执行立即插入

提问于
浏览
1

我正在尝试将随机生成数据插入表中,这里是代码“

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列 - idnameidmgr ;

执行立即语句中的上述查询如下所示:

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 回答

  • 3

    尝试从动态查询中删除 ; .

  • 1

    你为什么要使用execute immediate来做这件事 . 尝试按级别连接 .

    select prac_seq.nextval, 'name'||level, trunc(dbms_random.value(1,300)) as rnd
    from dual
    connect by level <= 300;
    

相关问题