CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

如何获得存储过程异常出错时的存储过程行号?

楼主pgh(crocodile)2005-04-18 16:39:43 在 Oracle / 开发 提问

rt 问题点数:20、回复次数:11Top

1 楼pgh(crocodile)回复于 2005-04-18 16:59:12 得分 0

kkTop

2 楼leborety(那只螃蟹)回复于 2005-04-19 17:13:06 得分 8

你应该就想知道那里错了吧  
  1。写的时候调试可以看到哪错了  
   
  2。每过一段代码,写赋值行号给一个变量,出错的时候,打印这个变量。  
   
  Top

3 楼Alkeen()回复于 2005-04-19 17:39:03 得分 0

程序编译错误的话,像SQL*Plus等工具都会提示哪一行出错的。  
  业务逻辑出错的话,就靠你自己写异常处理了。Top

4 楼pgh(crocodile)回复于 2005-04-20 09:49:50 得分 0

调试要知道哪行错是很容易的,   但是在部署存储过程的时候,   这个时候很大的存储过程出错了,如果你能立刻知道是哪行就很方便差错了.Top

5 楼leborety(那只螃蟹)回复于 2005-04-20 10:22:55 得分 0

我上说的第二个应该可以满足你的要求Top

6 楼pgh(crocodile)回复于 2005-04-20 12:57:04 得分 0

hehe,   多谢你啊,我现在也是在关键地方插入变量标识,   出错就写入出错日志里,   但是觉得很麻烦,   再看看,如果没有更好的办法,我就结贴咯Top

7 楼baojianjun(包子)回复于 2005-04-20 13:33:18 得分 0

EXCEPTION  
                WHEN   OTHERS   THEN        
                ROLLBACK;                                                    
                RAISE_APPLICATION_ERROR(-20007,ERR_||SQLERRM(SQLCODE));    
  end   ;  
  /  
   
  --使用sqlcode來返回就可以了Top

8 楼pgh(crocodile)回复于 2005-04-20 18:41:30 得分 0

to   baojianjun(包子):  
  使用sqlcode只能返回错误号,不能得到出错所在的代码行号吧Top

9 楼psp2003()回复于 2005-04-20 18:53:12 得分 0

顶一马Top

10 楼baojianjun(包子)回复于 2005-04-20 20:09:19 得分 12

使用sqlcode只能返回错误号,不能得到出错所在的代码行号吧  
   
  使用err_来返回代码错误的位置  
  --example:  
  create   or   replace   procedure   pro_test  
  as  
                err_             varchar2(200);  
                is_name       varchar2(30);  
  begin  
                err_   :=   'error   in   select   name   ..';  
                select   name   into   is_name  
                from       emp_main  
                where     name   =   'baojianjun'  
                and         rownum   =1   ;  
                err_   :=   'error   in   delete   from   ..';  
                delete   from   emp_main    
                where     name   =   'baojianjun';  
   
               
  EXCEPTION  
                WHEN   OTHERS   THEN        
                ROLLBACK;                                                    
                RAISE_APPLICATION_ERROR(-20007,ERR_||SQLERRM(SQLCODE));    
  end   ;  
  /Top

11 楼pgh(crocodile)回复于 2005-04-21 08:48:50 得分 0

to   baojianjun(包子):  
  你说的这个方法,我稍觉得麻烦,而且使得代码更加不清晰.不过看起来这是比较好的方法了Top

相关问题

  • 存储过程出错?
  • 存储过程出错
  • 存储过程出错!
  • 存储过程出错!!急!
  • 存储过程出错!
  • 存储过程的问题:附出错的存储过程
  • 存储过程执行出错了,如何获得出错后的错误描述信息?
  • 调用存储过程出错!!
  • 执行存储过程出错 :(
  • 存储过程出错,帮忙看看。

关键词

  • 存储过程
  • 代码
  • 出错
  • 行号
  • baojianjun
  • sqlcode
  • 变量
  • 错误
  • err
  • 返回

得分解答快速导航

  • 帖主:pgh
  • leborety
  • baojianjun

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo