Dmi*_*try 0 sql-server delphi com idl typelib
如何将SQL Server类型表示numeric(38,0)为IDL类型(COM类型库)?
非常感谢您的帮助!
PS例如,SQL Server类型int是longIDL中的类型.
COM中的数字可以是:
Int64)的整数- 最多19位有效数字;double) - 从15 - 17个有效十进制数字精度.因此对于38位数字,这些类型都不符合您的要求.您可以获得最佳分辨率Int64,但如果您的值高于9,223,372,036,854,775,807,您将达到溢出.
我认为更简单的兼容类型是一个很好的旧BSTR(widestring),您可以在其中存储尽可能多的数字 - 但编码为纯文本.在代码方面,您需要有一个BCD库来处理高分辨率数字:没有Delphi原生类型(偶数extended)具有这样的分辨率.
编辑:另一个选项(感谢提议的Ondrej)是一个字节数组.恕我直言COM二进制数组不像文本内容那么容易(并且速度效率较低,即使它使用较少的内存).编码选项可能是旧的BCD.您可以在COM对象的两侧找到库.