by
t.riqi),如果查询范围在一天之内,因为t.riqi就是一个值,子查询的结果集中只有一条记录,是没有问题的;而如果查询的日期范围超出1天,且有用户在不同的日期有登录,那么子查询的结果集将会有多个记录。这样,nvl函数的第一个参数就是一个多值的结果集,而不是一个单值的结果集,就发生ORA-01427的错误了。
如果数据库是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),这个函数能够返回错误行,可以套用以下格式:create or replace procedure 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捕获后,就会打印出错误信息及发生错误的行号
productid='0240040001' 中的 productid 是唯一主键么?如果不是
SELECT productid,productname,productprice,quantity FROM productinfo WHERE productid='0240040001'
会返回多条记录,也就没法存到单一变量中了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)