+ -
当前位置:首页 → 问答吧 → oracle sql 调用 自定义函数时出错

oracle sql 调用 自定义函数时出错

时间:2011-10-01

来源:互联网

写了个简单的pl/sql function, foo(t_id) 查询 table B 返回 一个varchar2 的值


邪门的是
select id, empname, foo(id)
from table_A
where id in ('id1234xyz','idasdf6789') --id 是random.string生成的混合码

能正常出结果 (表A的ID是pk,同时是表B的fk)foo(id)就是查询表B,合并一个描述项然后return


但是应用到全表

select id, empname, foo(id)
from table_A

就不成了,出错,说是call function无结果

好像是select 语句不知道怎么处理表A的id 并且pass到function里


试过用 cast(id as varchar2(20))什么的都不管用,其实那个id本身是字符串,不应该啊……


select id, empname, foo(name)
from table_A

故意用错误的列去,还能有点返回,说找不到记录(函数里面有错误处理,找不到就返回说没有这个ID),不是那种call function无结果的系统错……

真是奇怪极了

拜托拜托,帮忙想想

作者: xzhang148   发布时间: 2011-10-01

怀疑是不是由于你foo(id)内部找不到数据报错,报错导致的..

foo函数内部异常处理返回空字符串看看..

table B 表里面的数据就留几条A表里面存在的的数据看看,是不是还报错..

作者: xiaobluesky   发布时间: 2011-10-01