oracle 传给函数的参数一定是要定义的类型吗

zzb5620381 2016-01-25 03:44:21
先是写了个函数
CREATE OR REPLACE FUNCTION GetCurrBal(qrp_rq IN VARCHAR2,qrp_code IN VARCHAR2) return varchar2 is
res varchar2(90);
begin
if qrp_code='RMB' then
select sname into res from CCB_GYB where ACCOUNTING_DATE=qrp_rq; return(res);
elsif qrp_code='CNY' then
select sname into res from CCB_GYB where ACCOUNTING_DATE=qrp_rq; return(res);
elsif qrp_code='USD' then
select sname into res from CCB_GYB where ACCOUNTING_DATE=qrp_rq; return(res);
else
res:='没有匹配值!'; return(res);
end if;
end;

然后用一张表的两列值作为参数调用这个行数
但是这张表里的第一列accounting_date date类型传给函数作为第一个参数 varchar2 这是什么情况
我的世界崩坏了。类型不一样啊
...全文
394 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzb5620381 2016-01-26
  • 打赏
  • 举报
回复
引用 1 楼 LHDZ_BJ 的回复:
不太明白楼主的意思,这不也查出结果来了吗? 这种虽然查出了结果,但在参数传入过程中,包括里面的代码部分,会发生数据类型的转换,所以,还是尽量保持数据类型一致。 如果数据类型不一致,轻则数据量大时影响性能,重则不是所有的数据可以互相转换类型的。
你的意思是oracle 后台会自动帮忙转换数据类型。还有就是说这个自动转换不靠谱是不
lhdz_bj 2016-01-26
  • 打赏
  • 举报
回复
引用 3 楼 zzb5620381 的回复:
[quote=引用 1 楼 LHDZ_BJ 的回复:] 不太明白楼主的意思,这不也查出结果来了吗? 这种虽然查出了结果,但在参数传入过程中,包括里面的代码部分,会发生数据类型的转换,所以,还是尽量保持数据类型一致。 如果数据类型不一致,轻则数据量大时影响性能,重则不是所有的数据可以互相转换类型的。
你的意思是oracle 后台会自动帮忙转换数据类型。还有就是说这个自动转换不靠谱是不[/quote] 嗯,oracle在参数赋值和条件比较时会自动转换,这是说能自动转换的情况,如果不能转换,那就报错了,所以,最好别这么用,否则,说不定哪天就出问题了,而且排查也不容易。
Miracle_lucy 2016-01-25
  • 打赏
  • 举报
回复
时间类型自动转换为了字符串类型?
lhdz_bj 2016-01-25
  • 打赏
  • 举报
回复
不太明白楼主的意思,这不也查出结果来了吗? 这种虽然查出了结果,但在参数传入过程中,包括里面的代码部分,会发生数据类型的转换,所以,还是尽量保持数据类型一致。 如果数据类型不一致,轻则数据量大时影响性能,重则不是所有的数据可以互相转换类型的。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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