环境:RemObjects 6.0.43.801+UniDac3+Oracle9
笔者发现正在进行的一个基于Oracle的项目在取字段的长度时,如果表中含有Varchar2类型的字段,取出来的长度往往不是实际的定义长度,因为项目中采用了DA,开始怀疑是否是Undac的问题,在直接用Unidac访问Oracle测试的情况下,其字段返回的长度是正确的,遂排除它的问题,怀疑是否RO&DA的问题,一路跟踪下来,果然发现了问题:
在uDAUniDACDriver.pas 757行处:
跟踪到uDAOracleInterfaces.pas第268行:
字段的长度是返回的USER_TAB_COLUMNS表的'DATA_LENGTH'字段值,而准确的字符字段长度应该为CHAR_LENGTH
聪明的你应该知道怎么做了.