c语言里面有这样的宏:__FILE__  __LINE__我想问一下SQL里面有没有类似的功能,我想把行号输到异常,出问题了定位方便。

解决方案 »

  1.   

    eygle@SZTYORA> select rowid, ename, empno from emp;ROWID              ENAME                     EMPNO
    ------------------ -------------------- ----------
    AAAN7mAAIAAAAAPAAA luoyoumou                   111
    AAAN7nAAKAAAAAQAAA ALLEN                      7499
    AAAN7nAAKAAAAAQAAB WARD                       7521
    AAAN7nAAKAAAAAQAAC MARTIN                     7654
    AAAN7nAAKAAAAAQAAE TURNER                     7844
    AAAN7nAAKAAAAAQAAF JAMES                      7900
    AAAN7oAALAAAAAQAAA SMITH                      7369-- 根据rowid去查是哪一行出错啦!
      

  2.   

    我写了如下测试代码:    select rowid,mobile into strsql,strTmp from user_info where mobile=v_strMobile;  
        ret_code :=  strsql;
        raise EX_OUT;
    上面的 ret_code 是我的存储过程的输出参数,我想获得错误的行号。
    写成
    ret_code :=  strsql;  结果是:AAA8s/AAGAAAw0oAAB
    写成
    ret_code := to_number( strsql );   报错,说是转换成number的时候出错
      

  3.   

    to  luoyoumou:你用的是什么工具啊? sqlplus吗?
      

  4.   

    raise_application_error(-20001,'该用户不允许登录',false);----抛出自定义的错误或者 有 errorcode 可以获取错误码
      

  5.   

    你这个rowid是数据在磁盘上存放的位置!楼主的意思应该是当存储过程或函数出错了,想知道是这个存储过程或函数的哪一行出现的异常。类似于java中使用log4j打异常日志那种。
      

  6.   

    恩   可以加详细的日志,或者raise异常,谢谢大家。