我正在使用函数OCIDateTimeGetTime和OCIDateTimeGetDate从不透明数据结构OCIDateTime
的实例中获取信息。这两个函数都将OCIDateTime*
作为参数,以及一些写入数据的out参数。在OCIDateTimeGetDate
的文档中,我们可以看到此OCIDateTime*
是const
:
这是有道理的,因为它只是从中读取而不是更改它。但是,在类似的OCIDateTimeGetTime
的文档中,它不是const
:
文档中也没有提及任何区别。这是datetime
参数的条目:
日期时间(IN)
指向OCIDateTime描述符的指针,将从该描述符中获取时间信息 被检索。
对于OCIDateTimeGetDate
,使用“日期”而不是“时间”。
这似乎也不是文档错误:可以在 ociap.h 中找到以下原型:
/*----------------- Extensions to Datetime interfaces -----------------------*/
/*--------------------- Actual Prototypes -----------------------------------*/
sword OCIDateTimeGetTime(void *hndl, OCIError *err, OCIDateTime *datetime,
ub1 *hr, ub1 *mm, ub1 *ss, ub4 *fsec);
sword OCIDateTimeGetDate(void *hndl, OCIError *err, const OCIDateTime *date,
sb2 *yr, ub1 *mnth, ub1 *dy );
为什么会这样? OCIDateTimeGetTime
是否包含任何可能改变所传递的OCIDateTime
的未记录功能?还是这是一个错误,我可以假设OCIDateTime
不会被修改?