Oracle,执行立即插入

时间:2016-07-28 09:23:26

标签: oracle plsql

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

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;
/

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(1300))||');';   结束;错误报告:ORA-00911:无效字符ORA-06512:第3行   00911. 00000 - “无效字符”   *原因:标识符可能不以除以外的任何ASCII字符开头              字母和数字。第一个之后也允许$#_              字符。双引号括起来的标识符可能包含              除了双引号之外的任何字符。替代报价              (q'#...#')不能使用空格,制表符或回车符              分隔符。对于所有其他上下文,请参阅SQL语言              参考手册。   *操作:

为什么?逗号,引号..一切都经过检查和罚款。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

尝试从动态查询中删除$(function(){ $("#inventoryitem").change(function(){ console.log($(this).val); // Instead of alert i prefer you to use console }) })