在ORACLE里写了一个自定义函数,功能为取得序列号:
需要传两个参数.
sfgetslipno (p_dept in ....
p_kind in ......
)return char
IS
begin
p_kind := upper(p_kind);
select slipno_nowno
into v_sno
from slipno
where slip_typ_id = '02'
and slipno_seqid = p_kind
and dept_id = p_dept; return trim(p_dept)||v_sno
...
其中p_dept为部门编码,p_kind为编码类型.在存储过程里调用这个函数的时候:
v_no := sfgetslipno(参数)出现错误,但是我测试sfgetslipno函数的时候,是可以得到值,只要在存储过程里调用就得不到值,而且出现错误.调试存储过程的时候,当sfgetslipno执行完成返回存储过程的时候,直接出现OTHER错误.
请大家帮帮忙,谢谢大家.
需要传两个参数.
sfgetslipno (p_dept in ....
p_kind in ......
)return char
IS
begin
p_kind := upper(p_kind);
select slipno_nowno
into v_sno
from slipno
where slip_typ_id = '02'
and slipno_seqid = p_kind
and dept_id = p_dept; return trim(p_dept)||v_sno
...
其中p_dept为部门编码,p_kind为编码类型.在存储过程里调用这个函数的时候:
v_no := sfgetslipno(参数)出现错误,但是我测试sfgetslipno函数的时候,是可以得到值,只要在存储过程里调用就得不到值,而且出现错误.调试存储过程的时候,当sfgetslipno执行完成返回存储过程的时候,直接出现OTHER错误.
请大家帮帮忙,谢谢大家.
更新 slipno 表,把slipno_nowno 加上1.
发的时候总是提示我不能使用伤害论坛的言论,没办法,只好这样弄.不好意思.
into v_sno
from slipno
where slip_typ_id = '02'
and slipno_seqid = p_kind
and dept_id = p_dept;
如果你查不到值就会出错啊.直接就异常了.所以函数报不报错与你给的参数有很大的关系,你最好还是做一下处理,比如在NO_DATA_FOUND 里面给这个值赋为空,或者什么的.
p_kind是函数的参数,这样赋值会出错的
!