执行使出的错还是编译时出错?
在SQLPLUS中执行,错误号 ORA--???

解决方案 »

  1.   

    一定要用PL/SQL吗?
    如果是一次性操作,就没有必要了。你在什么情况下导入3000万的数据?不能用SQL*LOADER吗?
      

  2.   

    是每天都要做一次的,所以写成了存储过程。错误号是:PLS-00103
    我不是在sql*plus上做的,我用的pl/sql developer。
    存储过程的编译都没有通过,真是惨啊!
      

  3.   

    我是不会了
    换个思路,如果每天执行一次,能不能编个SHELL,每天执行就是了
      

  4.   

    应该不是权限的问题吧,我在pl/sql developer中按F8键连编译都通不过啊,现在最重要的是怎么通过编译,只要编译完成,存储过程会自动存储进数据库的。
      

  5.   

    用动态语句:execute immediate 'drop index pri_user_id_arrear';
      

  6.   

    那也不影响做成SHELL呀我不了解业务,不过想法是:
    1、先进入SQLPLUS,删除索引
    2、用SQL*LOADER导入数据
    3、进出SQLPLUS,创建索引3000万数据,向用户争取一下用后台操作吧
      

  7.   

    谢谢,ok了,就是用动态语句!
    原来:
    存储过程中不能有Create table 等之类的DDL语句。有两种方法解决
       1、先创建好临时表,在存储过程中直接使用(最好)
      2、用动态SQL