我的前端代码是:
PRIVATE SUB FORM_LOAD()
.Open SQL, CON, 1, 2
If .RecordCount > 0 Then
Combo4.Clear
.MoveFirst
Do While Not .EOF
Combo4.AddItem .Fields("ASSET_NAME").Value
Combo4.ItemData(Combo4.NewIndex) = .Fields("AID").Value
.MoveNext
Loop
Else
Combo4.Clear
End If
.Close
END SUB
我的Oracle表如下所示:
SQL> DESC ASSET
Name Null? Type
-------------------------------- -------- -------------
AID NOT NULL NUMBER(38)
ASSET_NAME VARCHAR2(50)
LOC_ID NUMBER(38)
UNIT VARCHAR2(25)
SUP_ID NUMBER(38)
BITT VARCHAR2(5)
SQL>
AID是ASSET表的主键,数据类型为INT。但是在前端我得到'6' OVERFLOW
的运行时错误。所以我决定更改AID列的数据类型。不幸的是我收到了这个错误:
SQL> ALTER TABLE ASSET
2 MODIFY AID DOUBLE;
MODIFY AID DOUBLE
*
ERROR at line 2:
ORA-00905: missing keyword
SQL>
答案 0 :(得分:0)
DOUBLE
不是Oracle数据类型,您可以使用BINARY_DOUBLE
或FLOAT()
。 Find out more
说了什么,对于应该持有整数的东西来说,两者都不是正确的选择。对于主键,它们也是一个糟糕的选择。坚持NUMBER
。
如果您遇到VB溢出错误,可以降低精度。像NUMBER(12,0)
这样的东西(或任何值可以为您的业务规则制定安全上限)。
请注意,我们无法更改已填充列的数据类型,只能更改空列。