VBA/ADO 連接 Oracle 時頻現 存取器不是參數存取器 或 列值被截斷 錯誤,特別涉及乘除法產生高精度小數場景。根因:Oracle NUMBER(38) 支持 38 位精度,而 Microsoft ADO 僅支持 28 位,精度不匹配導致數據協商失敗。
Provider=MSDAORA
SELECT TRUNC(1.11231234122312, 3) FROM dual; -- 保留 3 位小數
SELECT ROUND(col * 1.23, 10) FROM table; -- 業務邏輯中嵌入
TRUNC 以十進制位截斷,內部二進制表示可能仍超出 28 位,需實測驗證327557 確認 ADO 28 位精度限制