如何 插入数据 我想从一个表中 选择 一部分需要的数据 插入到新的表当中 不是取全部的数据 只取一部分的数据 还有 我在 PL/SQL里插入数据 提示 请问 如何 设置 缓冲去大小 是在 PL/SQL里设置 还是 在 oracle里设置
ora-06502 数字或值错误 字符串缓冲区太小谢谢 高手赐教 

解决方案 »

  1.   

    insert into tb1(col1,col2...,coln) select col1,col2...,coln from tb2
    insert into tb1 select col1,col2...,coln from tb2
      

  2.   

    检索出结果插入到另外一个表,
    应该没有ora-06502的错误,
    还有其他什么操作没?
      

  3.   


    insert into tb1(col1,col2...,coln) select col1,col2...,coln from tb2
      

  4.   

    declare 
            v_sql varchar2(2000); 
    begin 
      FOR i IN 1..3 LOOP  
      v_sql := ' insert into dtiajb2 values select PRODUCE_DATE, 
    ' || i || '
     from dtiajb'; 
      execute immediate v_sql; 
      commit; 
      END LOOP; 
    end; 以上代码 我在 PL/SQL里插入数据 提示 ora-06502 数字或值错误 字符串缓冲区太小
    请问 如何 设置 缓冲区大小 是在 PL/SQL里设置 还是 在 oracle里设置 
     
      

  5.   


    --VALUES去掉看看
    declare 
            v_sql varchar2(2000); 
    begin 
      FOR i IN 1..3 LOOP  
      v_sql := ' insert into dtiajb2 select PRODUCE_DATE, 
    ' || i || ' 
    from dtiajb'; 
      execute immediate v_sql; 
      commit; 
      END LOOP; 
    end; 
      

  6.   

    顶楼上的
    还有注意一下类型,如果不是数字型的,i要转换to_char(i)
      

  7.   

    通过表插入的时候不需要values
    还有就是如果出现这样的错误是因为数据类型的错误,即插入的数据和表结构中要求的数据不一致
    一点自己的看法
      

  8.   

    哦 对了 建议不要把commit放到loop中
    对执行的效率有影响
    貌似是习惯问题