首先,把写好的存储过程执行检查,看看是否报错;
其次,如果报错的话,就看看提示什么错误,定位到错误的位置,修正它;
再次,就是运行检查,如此按照以上的步骤反复验证。
另外,需要技巧的是,有时候很长的存储过程,需要逐步和分段分别执行调试。
B. 调用存储过程出现ORA-01403: 未找到数据。高分求高手,急!!!!!
请参照以下步骤:
1、根据PLSQL提示的错误行数定位到具体报错的那一行代码
2、查看该行代码是否有select .. into ...
3、修改程序兼容select 不到数据的情况,可以加max(),或者nvl(ksks,'默认值')之类的,这样就不会
报no data found exception了。
C. oracle语句在sql navigator中执行,报错后如何查找错误位置以及怎么快捷跳转到下一处错误
其实好像没你说的那么智能
首处错误的话,鼠标的光标会指向错误位置,然后你修改后,再运行时,错误才会指向下一处,而且,经过我多次观察,有时候的错误位置并不是十分正确,所以有时只能根据报的错误代码来确定到底是什么错误了
--------
你这是存储过程里的错误吧?
代码不长的话,发上来看看
D. oracle如何捕获存储过程报错是哪一行
如果数据库是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),这个函数能够返回错误行,可以套用以下格式:
create or replace procere prc_test(参数) is
v_no number;
begin
select no into v_no from zrp;
exception
when others then
dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
sqlerrm||chr(10)||
dbms_utility.format_error_backtrace());
end;
这样写的好处是,当程序发成异常,呗exception捕获后,就会打印出错误信息及发生错误的行号
E. 在PLSQL中测试存储过程时,会报如下错误,怎么办~
按错误提示,定位到存储过程出错的行数,仔细检查问题所在,并修改。再执行就没问题了。
F. 急!急!急!Oracle 数据库的一个字段每天凌晨2点多会定时被一个存储过程修改,请高手指点我该怎样定位
会不会是某个触发器里面, 调用了 rbt_admin_browsecat ?
或者是 某个 job 的 存储过程, 调用了 rbt_admin_browsecat
如果你知道 问题大约发生在 每天凌晨2点多.
那么你可以先去看看 dba_jobs 视图去看看。 看看有什么 job 是 2点多执行的。
然后再看看, 这个时间里面, 都有哪些存储过程被执行了。
然后去看看, 这些存储过程里面, 有谁调用了 rbt_admin_browsecat
G. 存储过程嵌套怎么定位输出错误的地方
SQL> CREATE SEQUENCE test_sequence2 2 increment by 1 -- 每次递增1 3 start with 1 -- 从1开始 4 nomaxvalue -- 没有最大值 5 minvalue 1 -- 最小值=1 6 NOCYCLE;序列已创建。SQL> -- 下一个序列号SQL> SELECT test_sequence2.nextval FROM
H. 这个存储过程哪里错了
你的建表语句中所有的中文名称都加了单引号。但是本身这个建表语句就是一个字符串,两端有单引号了。所以你需要在语句中对每个中文名称两端的单引号进行转义。
比如:
select attributevalue from samplegroupdetail sl2 where sl2.attributename='''生产厂家'''
and sl2.samplegrouppid=re.samplegrouppid and sl2.samplegroupdetailpid=re.samplegroupid
其他的都改成这样就行了。
还有,你提问题时,最好吧错误提示发出来,方便定位。你的数据库上的表回答的人是没有的。只能凭经验来看,没有报错提示会很困难。还有你上次存储过程的问题也是我回答的。你的追问看不懂,组织一下语言吧。
I. oracle错误行定位
写个存储过程,让它抛出exception,
假设有个表t,有一列字符型cola,存储的是日期格式,还有一列或几列是主键,能唯一确定这行数据的列 p,相当于你说的rowid
set serverout on size 999999
declare
dt date;
begin
for x in (select cola,p from t) loop
begin
dt := to_date(x.colA,'yyyy-mm-dd hh24:mi:ss');
exception when others then
dbms_output.put_line(x.p);
end;
end loop;
end;
/
--存储过程遍历整个表,将字符型日期格式的cola列取出做格式转换,如格式不正确,会列出是哪一行不正确,这个方法笨了些,但可以解决问题