oracle 自定义函数间调用无法传参(急!!!)

hornbill527 2009-08-30 12:42:46
我用的是oracle9i 自己写了一些函数用来批量处理数据,但发现有个问题,而且是偶发性的(有时候没事,有时候就有问题),就是函数之间互相调用的时候,如果传入参数和函数定义的参数名字不同的话,参数值就无法获取


例如 funcationA(memberid varchar2, description varchar2){...}


调用 funcationA(id,bak);参数数据类型都一样,只是名字用的不一样,这样调用 funcationA经常就无法获得传


进来的参数,改为funcationA(memberid,description);一般就能解决。



有没有人遇到过这样的问题,我没什么经验,不知道这个是由于什么引起的,一般来说参数名字不同对传参应该没有影响啊。
...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinlang5252 2009-08-31
  • 打赏
  • 举报
回复
理论上应该不存在你说的这种可能
zhaoweiting0609 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 inthirties 的回复:]
参数值和变量名最好区别于字段名。

比如如果tableA里有一个字段名为id

那么在procedure和function里你的一个变量名也叫id的话

这时候如果是select name into v_name from tablea where id = id;

这时就有问题出来了,这里的后面一个id就不是当作变量id了,而是当作字段id
所以也就有错误出来了,

也学你就是这样的问题。检查一下你的程序确认一下。
[/Quote]

可以按照这个检查一下
hornbill527 2009-08-30
  • 打赏
  • 举报
回复
上边的函数声明 换成
CREATE OR REPLACE FUNCTION processConsumePerson( balanceBatchID NUMBER,
r_tranhis cups_tran_history%ROWTYPE,
point_merc varchar2,
card_id varchar2,
flag number,
membermark varchar
)
就可以得到参数,point_merc,card_id本身传入时候是直接将字段值传进来的(r_tranhis.point_merc,r_tranhis.card_id),貌似和2楼的大侠说的意思相近,能具体说说原因吗?
学习下
jdsnhan 2009-08-30
  • 打赏
  • 举报
回复
应用中有值?
hornbill527 2009-08-30
  • 打赏
  • 举报
回复
CREATE OR REPLACE FUNCTION processConsumePerson( balanceBatchID NUMBER,
r_tranhis cups_tran_history%ROWTYPE,
cardPurseMerchantID varchar2,
membercardid varchar2,
flag number,
membermark varchar
)

retCode := processConsumePerson(balanceBatchID,r_tranhis,r_tranhis.point_merc,r_tranhis.card_id,3,‘1’);


上边调用的时候balanceBatchID,r_tranhis 都可以传进去(传入参数和函数声明的参数名称一致) ,我用debug看了都有值 ,r_tranhis.point_merc,r_tranhis.card_id就穿不进去 debug中cardPurseMerchantID,membercardid都没有接到传进来的参数值
inthirties 2009-08-30
  • 打赏
  • 举报
回复
参数值和变量名最好区别于字段名。

比如如果tableA里有一个字段名为id

那么在procedure和function里你的一个变量名也叫id的话

这时候如果是select name into v_name from tablea where id = id;

这时就有问题出来了,这里的后面一个id就不是当作变量id了,而是当作字段id
所以也就有错误出来了,

也学你就是这样的问题。检查一下你的程序确认一下。
搞笑 2009-08-30
  • 打赏
  • 举报
回复
理论上应该不存在你说的这种可能

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧