RPGIV编程问题百解(33)UDF使用和编程(一)
问题提出:
我在sqlrpgle中需要用到日期格式为YYMMDD,如何实现?
我采用如下sql语句也可以实现,就是较复杂。
SELECT cast(substr(year(current date),3,4) as varchar(2))||
cast(month(current date) as varchar(2))||cast(day(current date) as varchar(2))
FROM sysibm.sysdummy1
回答:
passthru(448081936) 14:15:12
建议你写一个UDF,可以在sql调用中。或ile环境下,任何语言之间调用。如
Mydate = exChgY4to2(mDate);
当mDate=20091022时,Mydate=091022.
在sql中,可以这样用
select exChgY4to2(mDate) from sysibm.sysdummy1
注:mDate是sysibm.sysdummy1表中的一个8位日期字段。
passthru(448081936) 15:09:14
呵呵,干脆给你写个udf吧:
P exChgY4to2 B export
D exChgY4to2 PI 6 a
D yyyymmdd 8 p 0 const
D retval s 6 a
/free
monitor;
retval = %subst(%char(yyyymmdd):3:6);
on-error;
retval = 'ERROR';
endmon;
return retval;
/end-free
P E
厦门★passthru(448081936) 15:32:24
udf除了可以在sql,ile任何语言中直接调用外,还可以做到,如果这个udf的输入值相对固定时,即相同,udf只运算第一次调用,接下去os/400自动跳过,直接返回上次调用结果。
阅读(1438) | 评论(0) | 转发(0) |