需要建立一个很多表的oracle数据库测试一个程序用
以前没接触过OR,现写了一段下面的代码在PL/SQL中执行:  declare 
  str varchar2(200);
  
  begin   
  for   i   in   1..200  loop   
  str:='CREATE   TABLE   table'||to_char(i)|| ' (col1 VARCHAR2(10));' ;  
  dbms_output.put_line(str);
  dbms_job.run(str);
 --EXECUTE   IMMEDIATE str;
  end loop ;
  end;
   
功能就是想建立一个table1 table2...tablei i能自己设定的表用dbms_job.run(str)打出来后检查str串里的东西存的没错可是一用注释起来的语句提交就错了,因为不是很了解or的语法和机制,所以希望哪位能点拨一下 ,怎么改或是如何实现类似功能谢谢了

解决方案 »

  1.   

    你语法没错
    下次注意出错信息:表名无效
     str:='CREATE   TABLE   table' ¦ &brvbarto_char(i) ¦ ¦ ' (col1 VARCHAR2(10));' ;  里面是不需要 ;  的
    str:='CREATE   TABLE   table' ||to_char(i) || ' (col1 VARCHAR2(10))' ;
      

  2.   

    谢谢hello world ,问题解决 我以为要str也要存一段完整的语句呢,;是特意加进去了,结果...o(∩_∩)o...谢谢啦~
    顺便把完成后的句子给大家分享下,没什么大用就是,能快速建许多表,方便测试程序。 
    declare 
      str varchar2(200);
      tem varchar2(200);
     
      
    begin   
      for   i   in   1..200  loop   ---表数
        str:='CREATE   TABLE   table'||to_char(i)|| ' (姓名 VARCHAR2(20),编号 number(20) PRIMARY KEY,年龄 number(10),出生日期    date)' ;  
       dbms_output.put_line(str);
      
       EXECUTE   IMMEDIATE str;
         for j in 1..2000 loop------加表的行数
             tem:='INSERT INTO table'||i||' (姓名 ,编号,年龄,出生日期 ) VALUES (''张三'','||j||','||18||','||'''1999-1-1'')';
            dbms_output.put_line(tem);
            EXECUTE   IMMEDIATE tem;
      
          end   loop ;
      end   loop ;
    end;