出现的错误可以用:show error查看。
我层经有过这样的经历,当时我是每执行一行变量加一,错误后,查看变量的值就知道错在哪了。不知道对于你是否可行。

解决方案 »

  1.   

    如果负责任的话:
    1.打开此文本文件;
    2.一段一段阅读以后,用Ctrl+c从文本文件中剪切,
    用ctrl+v到sqlplus中执行;
    3.show error,有错时进行改正;
    4.反复2,3。这样做的优点:
    1.及时发现错误并改正,如果前面错了,后面可能一连串错;
    2.多做“举重”方面的练习,有助于dba的成长。
      

  2.   

    1。每个有DML语句作为一个块(BEGIN...END...EXCEPTION)
    2。写自己的EXCEPTION如:
    create or replace procedure backup_table_to_file  /*功能:将ORACLE的任意表数据导出(标准格式) 编写:*/
    (
    v_tablename varchar2, /*需要导出的表名*/
    v_path varchar2, /*服务器上导出数据文件的目录*/
    v_string varchar2, /*服务器上导出数据文件的文件名*/
    v_where varchar2, /*查询条件*/
    v_flag varchar2,  /*写数据文件的方式 w:重写 a:追加*/
    outflag out varchar2    /*返回处理结果 0 成果、1 写入目录有误、2 表名有误、3 写入目录不能为空、4 写入文件方式有误、5 查询条件有误、6 其他错误*/
    )
    is
    file_handle utl_file.file_type;
    path_notinput_exception EXCEPTION;(用户自己定义的EXCEPTION)
    table_notfind_exception EXCEPTION;
    write_type_exception EXCEPTION;
    type ref_cursor_type is REF CURSOR;
    cursor_select ref_cursor_type;
    outputline varchar2(1000) ;
    select_cname varchar2(1000) ;
    w_flag varchar2(10);
    get_cname varchar2(1000) ;
    put_cname varchar2(1000) ;
    temp varchar2(1000) ;
    resault varchar2(1000) ;
    filepath varchar2(100) ;
    filename varchar2(100) ;
    i integer;
    begin
    。。
    IF (v_path is null) THEN     --初始化服务器文件夹
    RAISE path_notinput_exception;        抛出错误,截获方式和ORACLE自己的错误一样截获。

    3.请使用QUEST公司的TOAD工具。可以实现SQL语句的步进(STEP)。你要是闲的无聊也可以写一个。
      

  3.   

    呵呵,Lastdrop(空杯)兄好厉害啊还记得我上个帖子;没错我就是想在两个方案中选择。(程序读脚本,或是找到这样的工具)另外2、3楼两位说的也对,我们临时的方法就是请用户在Sql*Plus中执行.sql脚本,前面加上whenever sqlerror exit语句,并将打印spool到log文件中,这样不管wanring还是error都能看到,但现在想做一个程序来控制,并且请注意,这个脚本是不可控制的,会经常改变的,所以希望能有通用的方法来得到错误情况。4楼的方法我来试一下,请继续支持我这个菜鸟,谢谢!
      

  4.   

    泥可以建立一个中间表,然后在没执行一个独立的SQL脚本后,把这个SQL语句的编号和SQLERR记录到这个中间表中,然后等执行完毕后再来查看这个中间表,不就可以一目了然了~
      

  5.   

    忘记说在脚本里面应该做的事情了:
    每个有SQL语句作为一个块(BEGIN...END...EXCEPTION),然后在异常处理的时候INSERT INTO TEMP(SQL_NO,SQL_ERR) VALUE(...);
      

  6.   

    呵呵水兄两个帖子都来了啊,不过我上面说了:这个脚本不是我写的而且太多,不能要求脚本中做过多处理,只能通过程序实现;(这样才有点挑战性么hehe)
      

  7.   

    要是这样的话,那泥的临时办法也不失为一个好的解决办法;要是非得通过程序来实现的话,泥就用PROC写个程序来实现:从文件读每个到分号的语句来依次执行,然后记录每句SQL执行的信息到表中即可。
      

  8.   

    偶们是已经用JDBC写了工具,但是不放心,比如人家不写分号写'/',注释怎么判断,等等问题,总之写出来也不放心,所以很希望能将脚本交给SQL*PLUS运行,自己的程序在监控是否有异常情况及异常语句。--看来这样是不是太难实现了。